当前位置: 首页 > news >正文

编程助手学Python--Deepseek对OpenAI的Python库调用GPT-4模型生成对话回复理解

编程助手学Python--Deepseek对OpenAI的Python库调用GPT-4模型生成对话回复理解

      • 1. 导入库
      • 2. 设置环境变量
      • 3. 打印环境变量
      • 4. 配置 OpenAI API
      • 5. 打印 API 配置
      • 6. 定义对话消息
      • 7. 调用 OpenAI API
      • 8. 打印 API 响应
      • 9. 提取并打印生成的回复
      • 10. 代码总结
      • 11. 注意事项
      • 12. 完整代码示例
      • 13. 输出示例

import openai
import os

os.environ["OPENAI_API_KEY"] = "sk-xxx"
os.environ["OPENAI_API_BASE"] = "https://ai.com/v1"
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.api_base = os.getenv("OPENAI_API_BASE")
print(openai.api_key)
print(openai.api_base)
message = [{"role": "system", "content": "How are you today?"}]
res = openai.ChatCompletion.create(model="gpt-4-1106-preview", messages=message, stream=False,)
print(res)
print(res.choices[0].message["content"]) 详细解释
  • 这段代码使用 OpenAI 的 Python 库调用 GPT-4 模型生成对话回复。以下是详细解释:


    1. 导入库

    import openai
    import os
    
    • openai:OpenAI 官方库,用于调用 OpenAI API。
    • os:用于访问和操作环境变量。

    2. 设置环境变量

    os.environ["OPENAI_API_KEY"] = "sk-xxx"
    os.environ["OPENAI_API_BASE"] = "https://ai.com/v1"
    
    • os.environ:用于设置环境变量。
      • OPENAI_API_KEY:OpenAI API 的密钥,用于身份验证。
      • OPENAI_API_BASE:OpenAI API 的基础 URL,可以自定义为代理地址。

    3. 打印环境变量

    print(os.environ)
    
    • 打印当前进程的所有环境变量,确认 OPENAI_API_KEYOPENAI_API_BASE 已正确设置。

    4. 配置 OpenAI API

    openai.api_key = os.getenv("OPENAI_API_KEY")
    openai.api_base = os.getenv("OPENAI_API_BASE")
    
    • os.getenv:从环境变量中获取值。
      • openai.api_key:设置 OpenAI API 的密钥。
      • openai.api_base:设置 OpenAI API 的基础 URL。

    5. 打印 API 配置

    print(openai.api_key)
    print(openai.api_base)
    
    • 打印 openai.api_keyopenai.api_base,确认配置正确。

    6. 定义对话消息

    message = [{"role": "system", "content": "How are you today?"}]
    
    • message:一个包含对话消息的列表,每个消息是一个字典。
      • role:消息的角色,system 表示系统消息。
      • content:消息内容。

    7. 调用 OpenAI API

    res = openai.ChatCompletion.create(
        model="gpt-4-1106-preview",
        messages=message,
        stream=False,
    )
    
    • openai.ChatCompletion.create:调用 OpenAI 的对话生成 API。
      • model:指定使用的模型,这里是 GPT-4 的预览版。
      • messages:输入的消息列表。
      • stream:是否启用流式输出,False 表示一次性返回完整结果。

    8. 打印 API 响应

    print(res)
    
    • 打印完整的 API 响应,包含模型生成的回复及其他元数据。

    9. 提取并打印生成的回复

    print(res.choices[0].message["content"])
    
    • res.choices:API 返回的生成结果列表。
      • res.choices[0]:第一个生成结果。
      • res.choices[0].message["content"]:提取生成的消息内容并打印。

    10. 代码总结

    • 设置环境变量 OPENAI_API_KEYOPENAI_API_BASE
    • 配置 OpenAI API 的密钥和基础 URL。
    • 定义对话消息并调用 GPT-4 模型生成回复。
    • 打印生成的回复内容。

    11. 注意事项

    1. API 密钥安全性

      • 不要将 API 密钥硬编码在代码中,建议通过环境变量或配置文件加载。

      • 示例:

        export OPENAI_API_KEY="sk-xxx"
        export OPENAI_API_BASE="https://ai.com/v1"
        

        然后在代码中使用 os.getenv 获取。

    2. 模型选择

      • gpt-4-1106-preview 是 GPT-4 的预览版,可能需要特定权限才能访问。
      • 如果无法访问,可以替换为 gpt-3.5-turbo
    3. 错误处理

      • 调用 API 时可能会因网络问题或配额不足失败,建议添加错误处理:

        try:
            res = openai.ChatCompletion.create(
                model="gpt-4-1106-preview",
                messages=message,
                stream=False,
            )
        except Exception as e:
            print(f"An error occurred: {e}")
        
    4. 流式输出:

      • 如果启用 stream=True,API 会以流式方式返回结果,适用于实时交互场景。

    12. 完整代码示例

    import openai
    import os
    
    # 设置环境变量
    os.environ["OPENAI_API_KEY"] = "sk-xxx"
    os.environ["OPENAI_API_BASE"] = "https://ai.com/v1"
    
    # 打印环境变量
    print(os.environ)
    
    # 配置 OpenAI API
    openai.api_key = os.getenv("OPENAI_API_KEY")
    openai.api_base = os.getenv("OPENAI_API_BASE")
    
    # 打印 API 配置
    print(openai.api_key)
    print(openai.api_base)
    
    # 定义对话消息
    message = [{"role": "system", "content": "How are you today?"}]
    
    # 调用 OpenAI API
    try:
        res = openai.ChatCompletion.create(
            model="gpt-4-1106-preview",
            messages=message,
            stream=False,
        )
        # 打印 API 响应
        print(res)
        # 提取并打印生成的回复
        print(res.choices[0].message["content"])
    except Exception as e:
        print(f"An error occurred: {e}")
    

    13. 输出示例

    假设 API 调用成功,输出可能如下:

    {'OPENAI_API_KEY': 'sk-xxx', 'OPENAI_API_BASE': 'https://ai.com/v1', ...}
    sk-xxx
    https://ai.com/v1
    {
      "id": "chatcmpl-12345",
      "object": "chat.completion",
      "created": 1677652288,
      "model": "gpt-4-1106-preview",
      "choices": [
        {
          "index": 0,
          "message": {
            "role": "assistant",
            "content": "I'm just a computer program, so I don't have feelings, but I'm here to help you!"
          },
          "finish_reason": "stop"
        }
      ]
    }
    I'm just a computer program, so I don't have feelings or experiences, but I'm here and ready to assist you 
    with any questions or tasks you have. How can I help you today?
    

    通过以上步骤,你可以成功调用 OpenAI API 并生成对话回复。

相关文章:

  • docker 常用命令大全(二),docker 镜像操作 ,持续更新
  • 仅仅使用pytorch来手撕transformer架构(1):位置编码的类的实现和向前传播
  • 系统架构设计师知识小科普:系统架构评估
  • 【文献阅读】SPRec:用自我博弈打破大语言模型推荐的“同质化”困境
  • Linux上位机开发实战(qt编译之谜)
  • vue 仿deepseek前端开发一个对话界面
  • 3分钟复现 Manus 超强开源项目 OpenManus
  • 使用netlify部署github的vue/react项目或本地的dist,国内也可以正常访问
  • 人工智能混合编程实践:Python ONNX进行图像超分重建
  • PyTorch 和 Python关系
  • 先进制造aps专题三十一 免费企业高级计划和优化(Advanced Planning and Optimizer)产品FreeAPO简介
  • ELK traceId实现跨服务日志追踪
  • 【MySQL】MySQL程序解析
  • Leetcode 95-不同的二叉搜索树 II
  • Python----计算机视觉处理(opencv:像素,RGB颜色,图像的存储,opencv安装,代码展示)
  • 当量子计算遇上互联网安全:挑战与革新之路
  • Java 序列化和反序列化为什么要实现Serializable接口
  • Redis存数据就像存钱:RDB定期存款 vs AOF实时记账
  • 计算机视觉图像点运算【灰度直方图均衡化图形界面实操理解 +开源代码】
  • 深度学习 模型和代码
  • 东莞“超级”音乐节五一出圈背后:文旅热力何以澎湃经济脉动
  • 中美“第二阶段”贸易协定是否会在会谈中提出?商务部回应
  • 上海将发布新一版不予行政处罚清单、首份减轻行政处罚清单
  • 人民日报钟声:中方维护自身发展利益的决心不会改变
  • 戴维·珀杜宣誓就任美国驻华大使
  • 数据中心业务今年预增50%,丹佛斯:中国是全球最重要的市场