基于 OpenAI API的聊天机器人客户端示例
·
调用 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 核心流程图
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. 扩展建议
- 多轮对话支持: 维护对话历史,实现上下文连续对话
- 错误处理增强: 添加异常捕获和重试机制
- 参数配置化: 将参数放入配置文件或命令行参数
- 响应解析优化: 提取并格式化响应内容,仅输出助手回复
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)