当前位置:首页>python>Python 使用 OpenAI 接入大模型:从配置到流式输出实战

Python 使用 OpenAI 接入大模型:从配置到流式输出实战

  • 2026-09-06 12:57:04
Python 使用 OpenAI 接入大模型:从配置到流式输出实战

随着大模型 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("请做一个简短的自我介绍,并说明你能帮助用户做什么。")

        运行结果

        最新文章

        随机文章