这个项目会让你一次性学会LLM API 调用多轮对话conversation historystreamingCLI 工程结构async 编程prompt 管理你最终要做出的结果类似于并且一、项目结构1.先安装uvuv Documentation2.创建项目在cmd终端商执行uv init cli-chatbotcd cli-chatbot3.安装依赖uv add openai rich python-dotenv由于LLM本身不记忆历史每次问问题的时候就会出现就会非常的麻烦所以需要加入memory来帮助LLM记忆历史二、实现多轮对话memory.pyclass ConversationMemory:def __init__(self):self.messages [{role: system,content: You are a helpful AI assistant.}]def add_user_message(self, content):self.messages.append({role: user,content: content})def add_assistant_message(self, content):self.messages.append({role: assistant,content: content})def get_messages(self):return self.messagesapp.pyfrom openai import OpenAIfrom dotenv import load_dotenvfrom chatbot.memory import ConversationMemoryimport osload_dotenv()client OpenAI(api_keyos.getenv(OPENAI_API_KEY))memory ConversationMemory()while True:user_input input(\nYou: )if user_input.lower() exit:breakmemory.add_user_message(user_input)response client.chat.completions.create(modelgpt-4.1-mini,messagesmemory.get_messages())assistant_reply response.choices[0].message.contentmemory.add_assistant_message(assistant_reply)print(\nAssistant:)print(assistant_reply)目前已经实现多轮对话因为memory.get_messsage()会携带历史记录stream.pydef stream_response(stream):full_response for chunk in stream:content chunk.choices[0].delta.contentif content:print(content, end, flushTrue)full_response contentprint()return full_response修改app.pyfrom openai import OpenAIfrom dotenv import load_dotenvfrom chatbot.memory import ConversationMemoryfrom chatbot.stream import stream_responseimport osload_dotenv()client OpenAI(api_keyos.getenv(OPENAI_API_KEY))memory ConversationMemory()while True:user_input input(\nYou: )if user_input.lower() exit:breakmemory.add_user_message(user_input)stream client.chat.completions.create(modelgpt-4.1-mini,messagesmemory.get_messages(),streamTrue)print(\nAssistant:\n)assistant_reply stream_response(stream)memory.add_assistant_message(assistant_reply)输出结果注以上内容为 AI 辅助生成的参考回答仅供参考请自行核实关键信息。
CLI-Chatbot实现多轮对话以及history
发布时间:2026/5/27 1:38:10
这个项目会让你一次性学会LLM API 调用多轮对话conversation historystreamingCLI 工程结构async 编程prompt 管理你最终要做出的结果类似于并且一、项目结构1.先安装uvuv Documentation2.创建项目在cmd终端商执行uv init cli-chatbotcd cli-chatbot3.安装依赖uv add openai rich python-dotenv由于LLM本身不记忆历史每次问问题的时候就会出现就会非常的麻烦所以需要加入memory来帮助LLM记忆历史二、实现多轮对话memory.pyclass ConversationMemory:def __init__(self):self.messages [{role: system,content: You are a helpful AI assistant.}]def add_user_message(self, content):self.messages.append({role: user,content: content})def add_assistant_message(self, content):self.messages.append({role: assistant,content: content})def get_messages(self):return self.messagesapp.pyfrom openai import OpenAIfrom dotenv import load_dotenvfrom chatbot.memory import ConversationMemoryimport osload_dotenv()client OpenAI(api_keyos.getenv(OPENAI_API_KEY))memory ConversationMemory()while True:user_input input(\nYou: )if user_input.lower() exit:breakmemory.add_user_message(user_input)response client.chat.completions.create(modelgpt-4.1-mini,messagesmemory.get_messages())assistant_reply response.choices[0].message.contentmemory.add_assistant_message(assistant_reply)print(\nAssistant:)print(assistant_reply)目前已经实现多轮对话因为memory.get_messsage()会携带历史记录stream.pydef stream_response(stream):full_response for chunk in stream:content chunk.choices[0].delta.contentif content:print(content, end, flushTrue)full_response contentprint()return full_response修改app.pyfrom openai import OpenAIfrom dotenv import load_dotenvfrom chatbot.memory import ConversationMemoryfrom chatbot.stream import stream_responseimport osload_dotenv()client OpenAI(api_keyos.getenv(OPENAI_API_KEY))memory ConversationMemory()while True:user_input input(\nYou: )if user_input.lower() exit:breakmemory.add_user_message(user_input)stream client.chat.completions.create(modelgpt-4.1-mini,messagesmemory.get_messages(),streamTrue)print(\nAssistant:\n)assistant_reply stream_response(stream)memory.add_assistant_message(assistant_reply)输出结果注以上内容为 AI 辅助生成的参考回答仅供参考请自行核实关键信息。