调用 OpenAI 的 GPT-3.5 Turbo 模型进行对话交互

1. 项目概述

1.1 项目简介

本项目是一个基于 OpenAI API 的聊天机器人客户端示例,演示如何通过 Python 调用 OpenAI 的 GPT-3.5 Turbo 模型进行对话交互。
在这里插入图片描述

1.2 功能特性

  • 通过 HTTP POST 请求调用 OpenAI Chat Completions API
  • 支持自定义系统角色和用户消息
  • 配置参数可调(temperature、max_tokens 等)
  • 中文编码支持,确保输出正常显示

2. 技术架构

2.1 技术栈

分类 技术 版本
语言 Python 3.3+
HTTP 客户端 requests 2.25+
API 服务 OpenAI API v1

2.2 核心流程图

开始

加载环境变量

构建请求头

构造请求数据

发送 POST 请求

解析响应

输出结果

结束


3. 安装与配置

3.1 环境要求

  • Python 3.3+
  • 有效的 OpenAI API Key

3.2 依赖安装

pip install requests

3.3 环境变量配置

在系统环境变量中设置以下变量:

变量名 说明 示例值
OPENAI_BASE_URL OpenAI API 基础地址 https://api.openai.com/v1
OPENAI_API_KEY OpenAI API 密钥 sk-xxxxxxxxxxxxxxxx

注意:国内无法直接调用OpenAI API,但可以用第三方API调用
网关由原来的 https://api.openai.com 替换为 https://api.openai-hk.com
获取OpenAI API 密钥可以去注册https://www.openai-hk.com/账号

4. 代码结构

4.1 文件说明

文件 说明
ai-demo.py 主程序文件,包含完整的 API 调用逻辑

4.2 核心代码解析

4.2.1 导入模块
import requests
import json
import os
import io
import sys
4.2.2 编码设置
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

确保控制台输出支持中文显示。

4.2.3 API 配置
url = f"{os.getenv('OPENAI_BASE_URL')}/chat/completions"
api_key = os.getenv('OPENAI_API_KEY')

从环境变量读取 API 地址和密钥,避免硬编码敏感信息。

4.2.4 请求参数说明
参数 类型 默认值 说明
max_tokens int 1200 响应最大 token 数
model string gpt-3.5-turbo 使用的模型名称
temperature float 0.8 温度系数,控制随机性
top_p float 1 核采样参数
presence_penalty float 1 存在惩罚,鼓励新话题

5. 运行方式

5.1 代码实例

# ai-demo.py
import requests
import json
import os
import io
import sys

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

url = f"{os.getenv('OPENAI_BASE_URL')}/chat/completions"
api_key = os.getenv('OPENAI_API_KEY')

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {api_key}"
}

data = {
    "max_tokens": 1200,
    "model": "gpt-3.5-turbo",
    "temperature": 0.8,
    "top_p": 1,
    "presence_penalty": 1,
    "messages": [
        {
            "role": "system", "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "你知道AI的应用途径有哪些吗?"
        }
    ]
}

response = requests.post(url, headers=headers, data=json.dumps(data).encode('utf-8') )
result = response.content.decode("utf-8")

print(result)

运行命令

python ai-demo.py

5.2 输出实例

{
    "id": "chatcmpl-DZAplrHX8QrgmLKywxLvfaV8IveFb",
    "object": "chat.completion",
    "created": 1777275497,
    "model": "gpt-4.1-mini-2025-04-14",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "当然知道!AI(人工智能)的应用途径非常广泛,几乎覆盖了各行各业。以下是一些主要的应用领域和途径:\n\n1. **自然语言处理(NLP)**  \n   - 机器翻译(如谷歌翻译)  \n   - 语音识别(如Siri、Alexa)  \n   - 文本生成(如聊天机器人、自动写作)  \n   - 情感分析(用于舆情监测、客户反馈分析)\n\n2. **计算机视觉**  \n   - 图像识别与分类(如人脸识别、安全监控)  \n   - 医学影像分析(辅助诊断)  \n   - 自动驾驶中的环境感知  \n   - 视频监控与行为分析\n\n3. **机器人技术**  \n   - 工业机器人(制造生产线自动化)  \n   - 服务机器人(清洁、送餐等)  \n   - 无人机(物流、农业巡检)\n\n4. **推荐系统**  \n   - 电商个性化推荐(亚马逊、淘宝)  \n   - 内容推荐(视频平台如Netflix、YouTube)  \n   - 社交媒体信息流优化\n\n5. **金融科技**  \n   - 风险评估与信用评分  \n   - 自动交易算法  \n   - 反欺诈检测\n\n6. **医疗健康**  \n   - 疾病预测与诊断辅助  \n   - 个性化治疗方案推荐  \n   - 健康数据监测与管理\n\n7. **教育领域**  \n   - 智能教学助手  \n   - 自适应学习系统  \n   - 自动批改作业\n\n8. **智能制造与工业互联网**  \n   - 设备预测维护  \n   - 质量检测自动化  \n   - 生产流程优化\n\n9. **交通运输**  \n   - 智能交通信号控制  \n   - 路况预测与优化  \n   - 自动驾驶技术\n\n10. **娱乐和创意产业**  \n    - AI音乐创作  \n    - 游戏中的智能对手设计  \n    - 虚拟现实与增强现实体验提升\n\n总之,AI通过数据分析、模式识别和自主决策,极大地提升了效率,改善了用户体验,推动了产业升级。如果你有具体行业或应用方向想了解,我可以帮你详细介绍!",
                "refusal": null,
                "annotations": []
            },
            "logprobs": null,
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 17,
        "completion_tokens": 509,
        "total_tokens": 526,
        "prompt_tokens_details": {
            "cached_tokens": 0,
            "audio_tokens": 0
        },
        "completion_tokens_details": {
            "reasoning_tokens": 0,
            "audio_tokens": 0,
            "accepted_prediction_tokens": 0,
            "rejected_prediction_tokens": 0
        }
    },
    "service_tier": "default",
    "system_fingerprint": "fp_b6f445fc1c"
}

6. API 调用说明

6.1 请求格式

  • HTTP 方法: POST
  • URL: {OPENAI_BASE_URL}/chat/completions
  • Content-Type: application/json

6.2 请求体结构

{
  "max_tokens": 1200,
  "model": "gpt-3.5-turbo",
  "temperature": 0.8,
  "top_p": 1,
  "presence_penalty": 1,
  "messages": [
    {"role": "system", "content": "系统提示词"},
    {"role": "user", "content": "用户问题"}
  ]
}

6.3 响应结构

字段 说明
id 对话完成 ID
object 对象类型
created 创建时间戳
model 使用的模型
choices 响应选项列表
usage token 使用统计

7. 常见问题

7.1 编码问题

现象: 输出出现乱码
解决方案: 代码已内置 UTF-8 编码处理,确保控制台支持中文显示。

7.2 API 认证失败

现象: 返回 401 错误
解决方案: 检查 OPENAI_API_KEY 环境变量是否正确设置。

7.3 网络连接问题

现象: 连接超时或拒绝
解决方案: 检查网络连接,如需代理请配置相应环境变量。


8. 扩展建议

  1. 多轮对话支持: 维护对话历史,实现上下文连续对话
  2. 错误处理增强: 添加异常捕获和重试机制
  3. 参数配置化: 将参数放入配置文件或命令行参数
  4. 响应解析优化: 提取并格式化响应内容,仅输出助手回复

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐