随着大模型 API 的普及,越来越多开发者希望在自己的 Python 项目中集成 AI 能力。但很多人卡在第一步:API Key 怎么配?为什么连不上?如何实现像 ChatGPT 那样的“逐字输出”效果?
今天,我们就手把手教你用 Python + OpenAI 官方 SDK,安全接入大模型(包括 OpenAI、DeepSeek、智谱等兼容接口),并实现流式响应!
一、准备工作
1. 安装必要库
pip install openai python-dotenv
简要介绍:
openai:官方 SDK,支持所有兼容 OpenAI 协议的模型python-dotenv:从.env文件加载配置,避免密钥硬编码
2. 获取 API Key
OpenAI 用户:前往 https://platform.openai.com/api-keysDeepSeek 用户:注册 https://www.deepseek.com,获取 API Key其他国产模型:如 Moonshot、智谱、百川等,均提供 OpenAI 兼容接口
3. 创建 .env 配置文件(关键!)
在项目根目录新建 .env 文件:
# OpenAI 官方OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxOPENAI_API_BASE_URL=https://api.openai.com/v1# 或 DeepSeek(示例)OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxOPENAI_API_BASE_URL=https://api.deepseek.com/v1
二、核心代码实现
from openai import OpenAIimport osfrom dotenv import load_dotenv# 加载 .env 文件中的环境变量load_dotenv()def get_response(prompt): """普通请求模式""" print(f"加载 api_key :{os.getenv('OPENAI_API_KEY')}") client = OpenAI( api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_API_BASE_URL") ) completion = client.chat.completions.create( model="deepseek-chat", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": prompt}, ], temperature=0.7, max_tokens=256, ) print("\n【完整回复】\n" + completion.choices[0].message.content)def get_response_stream(prompt): """流式输出模式(逐字打印,体验更佳)""" print(f"加载 api_key :{os.getenv('OPENAI_API_KEY')}") client = OpenAI( api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_API_BASE_URL") ) completion = client.chat.completions.create( model="deepseek-chat", stream=True, messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": prompt}, ], ) print("\n【流式输出】\n", end="") for chunk in completion: if chunk.choices[0].delta.content is not None: print(chunk.choices[0].delta.content, end="", flush=True) print("\n\n✅ 流式响应结束") if __name__ == '__main__': get_response_stream("请做一个简短的自我介绍,并说明你能帮助用户做什么。")
运行结果