【Agent.06】使用openai sdk实现多轮对话
欢迎阅读慕雪撰写的AI Agent专栏,本专栏目录如下
- 【MCP】详细了解MCP协议:和function call的区别何在?如何使用MCP?
- 【AI】AI对26届及今后计算机校招的影响
- 【Agent.01】AI Agent智能体开发专题引言
- 【Agent.02】市面上常见的大模型有哪些?
- 【Agent.03】带你学会写一个基础的Prompt
- 【Agent.04】AI时代的hello world:调用OpenAI接口,与大模型交互
- 【Agent.05】OpenAI接口Function Calling工具调用详解
- 【Agent.06】使用openai sdk实现多轮对话
- 【Agent.07】什么是Agent?从Chat到ReAct的AI进化之路
本专栏的所有代码都可以在https://gitee.com/musnows/agent-blog找到。
本文介绍了如何使用OpenAI Python SDK实现多轮对话和Function Calling功能,包括SDK安装、多轮对话维护和函数调用的完整示例。
1. 引言
在上一篇文章中,我们使用requests库直接调用OpenAI API,实现了基础的AI交互功能。虽然这种方式能够帮助我们理解API的工作原理,但在实际开发中,直接使用HTTP请求会显得有些"原始"。
OpenAI官方提供了Python SDK,能够让我们更方便的实现这些功能。其本质上也是封装了requests库和aiohttp库提供的网络请求能力,将其从我们网络请求原始获取到的json字段,变成了response对象的成员变量。
本文将简单示例如何使用OpenAI Python SDK的使用方式,以及我们如何进行多轮对话的messages维护示例,都很简单,看看就会了。
2. OpenAI SDK入门
2.1. 安装SDK
首先需要安装OpenAI的Python SDK:
1 | pip3 install openai |
安装完成后,我们就可以使用OpenAI提供的客户端类来调用API了。
2.2. 基础配置
使用SDK之前,需要先配置API密钥。推荐使用环境变量的方式:
1 | import os |
注意:把API密钥设置在环境变量中比硬编码在代码里更安全,这也是生产环境的最佳实践。
3. 多轮对话实现
3.1. 对话状态管理
多轮对话的核心在于维护对话历史。我们需要在每次请求时,将之前的对话内容一起发送给AI模型。
1 | import os |
3.2. 对话效果演示
运行上面的代码,我们可以实现如下对话:
1 | ❯ uv run 03.multi.round.chat/multi_round_chat.py |
可以看到,AI能够记住我们之前提到的名字"小明",这就是通过维护messages列表实现的。
4. 总结
OpenAI SDK用起来确实比直接requests调用舒服多了,代码更简洁,也不用自己处理各种HTTP细节。多轮对话的实现原理也很简单,就是把对话历史保存起来,每次请求都带上,作为对话的记忆。
这里也展现了LLM“无状态”的特性,我们把相同的messages数组传递给任何模型,只要不超过目标模型的上下文Token数量,模型就能“记住”我们对话的内容,根据对话历史,为我们生成回答。
不过,在实际的Agent开发中,多轮对话并不常使用,绝大部分Agent框架只需要提供入口prompt,后续的所有流程都是Agent自行解决。
但这不代表多轮对话就不用掌握了,还是得了解了解如何维护多轮对话的状态的。

