大模型应用开发第八讲:OpenAI API入门 基础聊天程序搭建步骤
资料取自《大模型应用开发:动手做AI Agent 》。
查看总目录:学习大纲
关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南
用「开奶茶店」的步骤类比,手把手实现智能对话
一、核心组件认知(做奶茶需要的工具)
组件 | 比喻 | 作用 |
---|---|---|
API密钥 | 店铺营业执照 | 证明你有权限使用AI服务 |
助手(Assistant) | 店长 | 内置技能、负责思考如何回复 |
线程(Thread) | 顾客对话记录本 | 存储某次聊天的全部内容 |
消息(Message) | 顾客说的话/奶茶订单 | 用户的提问或AI的回答 |
运行(Run) | 店长处理订单的过程 | AI分析问题并生成回复的过程 |
▲ 组件类比关系(来源于资料2的API调用流程)[2]
二、五步搭建基础聊天程序(开张流程)
1. 准备原料:安装开发工具
具体操作:
① 安装Python(建议3.8+版本)
② 安装OpenAI库:pip install openai
③ 配置API密钥(在系统环境变量添加OPENAI_API_KEY
)[4]
⚠️ 注意:密钥就像奶茶店的收银机密码,绝对不能泄露! [4]
▲ 环境准备步骤(代码来源于资料4的初始化代码)[4]
2. 招聘店长:创建AI助手
代码实现:
from openai import OpenAI
client = OpenAI() # 连接官方API[4]
assistant = client.beta.assistants.create(
instructions="你是一个客服助手,用可爱表情包风格回答问题",
model="gpt-3.5-turbo", # 选择语言模型
tools=[{"type": "code_interpreter"}] # 添加代码解释器能力
)
print(f"助手ID: {assistant.id}") # 记住这个身份证号!
关键参数解释:
instructions
:给AI的人格设定(就像奶茶店的员工手册)tools
:赋予AI使用的工具(如计算器、数据库查询)2
3. 接待顾客:创建对话线程
代码示例:
# 新建一个对话本(记录此顾客的所有聊天)
thread = client.beta.threads.create()
print(f"对话本ID: {thread.id}")
# 添加用户消息(模拟顾客下单)
message = client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="奶茶买三杯能打折吗?(*╹▽╹*)"
)
运行示意图:
▲ 线程管理流程(来源于资料2的Thread处理流程)[2]
4. 处理订单:启动AI思考
启动运行与结果获取:
# 告诉店长开始处理这个订单
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id
)
# 每隔5秒检查是否处理完成(类似查看订单进度)
while True:
run_status = client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id
)
if run_status.status == "completed":
break
time.sleep(5)
# 提取AI的回复(取最后一杯奶茶)
messages = client.beta.threads.messages.list(thread_id=thread.id)
latest_reply = messages.data[0].content[0].text.value
print("AI回复:", latest_reply)
典型输出:
🥤三杯打9折哦~再送您一张小猫优惠券ฅ^•ﻌ•^ฅ 2
5. 优化服务:添加记忆功能
实现上下文记忆:
# 后续对话直接在同一个线程中继续
new_message = client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="那再加一杯波霸奶茶呢?"
)
# 重新启动运行(AI会自动关联之前对话)
new_run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id
)
运行效果:
🧋四杯共144元!赠送两张优惠券啦~ (๑•̀ㅂ•́)و✧ 2
三、常见问题解答(新手避坑指南)
1. 错误1:401未授权
- 原因:API密钥错误或过期
- 解决:检查环境变量名称是否为
OPENAI_API_KEY
,重新生成密钥4
2. 错误2:消息不连贯
- 原因:每次使用新线程导致遗忘上下文
- 解决:对同一用户固定使用同一个thread_id [6]
3. 进阶技巧:添加工具
# 让助手能调用计算器
assistant = client.beta.assistants.update(
assistant.id,
tools=[{"type": "code_interpreter"}, {"type": "function"}],
)
▲ 添加新工具流程(案例来自资料5的函数调用扩展)[5]
四、完整代码示例(奶茶店客服程序)
from openai import OpenAI
import time
# 连接API(自动读取环境变量密钥)
client = OpenAI()
# 创建助手
assistant = client.beta.assistants.create(
name="奶茶小助手",
instructions="回答时使用可爱表情和颜文字,满3杯打九折",
model="gpt-3.5-turbo",
)
# 处理用户提问函数
def chat_with_ai(user_input, thread_id=None):
if not thread_id:
thread = client.beta.threads.create()
thread_id = thread.id
client.beta.threads.messages.create(
thread_id=thread_id,
role="user",
content=user_input
)
run = client.beta.threads.runs.create(
thread_id=thread_id,
assistant_id=assistant.id
)
while True:
run_status = client.beta.threads.runs.retrieve(
thread_id=thread_id, run_id=run.id
)
if run_status.status == "completed":
break
time.sleep(3)
messages = client.beta.threads.messages.list(thread_id=thread_id)
return messages.data[0].content[0].text.value, thread_id
# 测试对话
reply, tid = chat_with_ai("请问招牌奶茶是什么?")
print("AI:", reply) # 输出:🥤我们的招牌是芝士奶盖绿茶哦~ (ゝ∀・)
new_reply, tid = chat_with_ai("大杯多少钱?", tid)
print("AI:", new_reply) # 输出:🧋大杯25元!第二杯半价哒~(๑•̀ㅂ•́)و✧
▲ 完整可运行代码(整合资料4/5/6的实现案例)4[6]
关键知识点索引
- 助手创建 → 《大模型应用开发:动手做AI Agent 》的创建助手参数说明[2]
- 线程管理 → 《大模型应用开发:动手做AI Agent 》的Thread状态检查代码[6]
- 上下文对话 → 《大模型应用开发:动手做AI Agent 》的消息列表操作实例[5]
- 错误处理 → 《大模型应用开发:动手做AI Agent 》的错误状态监控流程[6]
- 工具扩展 → 《大模型应用开发:动手做AI Agent 》的计划与执行框架集成思路[1]
全流程总图:
▲ API聊天程序工作流程(整合资料2/4/6的交互逻辑)2[6]
目录:总目录
上篇文章:大模型应用开发第七讲:OpenAI API入门 注册与API密钥获取
下篇文章:大模型应用开发第九讲:RAG(检索增强生成)流程:用户查询→检索→生成响应
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。