OpenAI API 接入指南:从 Key 获取到 Python 实战
介绍 OpenAI API 在国内环境下的接入流程,包括 Key 获取、Python 环境配置及基础调用。内容涵盖应用场景、流式传输、函数调用及提示词工程优化。通过修改 base_url 适配第三方代理,实现大语言模型的快速集成与应用开发。

介绍 OpenAI API 在国内环境下的接入流程,包括 Key 获取、Python 环境配置及基础调用。内容涵盖应用场景、流式传输、函数调用及提示词工程优化。通过修改 base_url 适配第三方代理,实现大语言模型的快速集成与应用开发。

想象一下,如果你的几行代码就能让应用拥有理解上下文的能力;如果输入几个关键词,后台就能自动生成高质量的营销文案;如果上传一张图,程序就能精准识别内容并输出分析报告……
这不再是科幻电影的桥段,而是 OpenAI API 带来的技术现实。无论你是全栈开发者、数据分析师,还是正在探索 AI 边界的学生,LLM(大语言模型)都已经成为提升效率的'核武器'。
但在国内进行 AI 开发,我们常面临网络不稳定、支付困难、账号被封等'拦路虎'。本指南将提供一套适合国内开发者的接入方案,带你从零开始,获取 API Key 并用 Python 玩转 OpenAI 和 Claude 强大的生成能力。
OpenAI API 提供的自然语言处理(NLP)能力,可以被视为一个'万能的大脑',通过接口即可接入你的系统。以下是几个经典的应用方向:
为了解决国内访问 OpenAI 官方接口的网络和支付门槛,本教程使用第三方聚合接口为大家写这篇文章教程。它完全兼容 OpenAI 官方协议,同时支持 Anthropic(Claude)等模型,更加稳定便捷。
sk- 开头)。确保你的环境中有 Python 3.7+,然后安装官方库:
pip install openai
# 如果需要使用 Claude 原生 SDK(可选)
pip install anthropic
我们将使用 OpenAI 官方的 Python 库来调用接口,只需修改 base_url 和 api_key。
以下代码展示了如何进行一次最简单的对话:
from openai import OpenAI
# 初始化客户端
# 注意:base_url 必须以 /v1 结尾
client = OpenAI(
api_key="你的第三方_API_KEY", # 替换为你获取的 sk-xxxx
base_url="https://your-proxy-url/v1"
)
try:
response = client.chat.completions.create(
model="gpt-5", # 也可以换成 gpt-4o 或 claude-3-5-sonnet-20240620
messages=[
{"role": "system", "content": "你是一个资深的 Python 技术专家,擅长用通俗易懂的语言解释问题。"},
{"role": "user", "content": "请用一句话解释什么是递归。"}
]
)
print("AI 回复:", response.choices[0].message.content)
except Exception as e:
print(f"调用出错:{e}")
🔍 代码解析:
system: 设定 AI 的人设(比如'专家'、'猫娘'、'翻译官')。user: 用户的输入。掌握了基础调用后,我们来看两个让应用体验质变的技巧。
像 ChatGPT 网页版一样,一个字一个字地蹦出来,而不是让用户面对空白屏幕等待 10 秒。
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "请写一篇关于人工智能发展历史的短文,300 字左右。"}
],
stream=True # 👈 开启流式传输
)
print("正在生成内容:")
for chunk in response:
if chunk.choices[0].delta.content is not None:
# flush=True 确保内容立即输出到控制台,不缓存
print(chunk.choices[0].delta.content, end="", flush=True)
print("\n生成结束。")
这是 LLM 最强大的功能之一。你可以定义工具(如'查询天气'、'查数据库'),AI 会智能判断是否需要调用,并返回参数。
import json
# 1. 定义工具函数结构
tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "获取指定城市的当前天气信息",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "城市名称,如:北京,上海"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["location"]
}
}
}
]
# 2. 发起请求
messages = [{"role": "user", "content": "北京今天天气怎么样?出门需要带伞吗?"}]
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages,
tools=tools,
tool_choice="auto"
)
response_message = response.choices[0].message
tool_calls = response_message.tool_calls
# 3. 判断 AI 是否想要调用函数
if tool_calls:
print(f"AI 请求调用函数:{tool_calls[0].function.name}")
print(f"参数:{tool_calls[0].function.arguments}")
# 在实际应用中,这里你会解析参数,去调用真实的天气 API,然后把结果传回给 AI
很多时候,AI 回答不好不是模型笨,而是提示词(Prompt)写得不到位。以下是几个经过验证的优化原则:
立人设 (Persona):
提供上下文 (Context):
结构化输出 (Structured Output):
思维链 (Chain of Thought):
Q1: 在使用代理服务时 Key 安全吗?
A: 正规服务采用多重加密措施保障数据安全。建议定期更换 Token 以确保存储安全。
Q2: 为什么我的代码报错 Rate limit reached?
A: 这通常意味着请求频率过高。请检查你的账户余额,或在代码中增加重试机制(Retry logic)。
Q3: 可以开发商用产品吗?
A: 可以。通过 API 构建的应用完全属于你。注意遵守相关服务的使用政策(如不生成暴力、色情内容)。
Q4: 如何获取 Anthropic (Claude) 的 Key?
A: 在聚合平台,你通常不需要单独获取 Claude 的 Key,直接在代码的 model 参数中指定 claude-3-opus 等模型名称,使用同一个 Token 即可调用,这是聚合接口的一大便利。
AI 的浪潮已经到来,API 是连接这股浪潮最直接的桥梁。通过本文的介绍,相信你已经掌握了从获取 Key 到编写 Python 代码的核心流程。
下一步: 不要只停留在阅读,现在就去申请一个 Token,把文中的'示例'代码跑通。如果你在开发过程中遇到任何问题,欢迎查阅官方文档或社区资源。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online