You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于GPT-3.5-Turbo API实现多轮对话(非OpenAI SDK)

实现GPT-3.5-Turbo的多轮对话关联

你的代码存在两个核心问题导致无法关联对话历史:

  • 每次循环都重新创建messages列表,没有保留之前的对话内容
  • 错误地将用户输入标记为system角色(system是用来设定AI行为的系统提示,用户消息应该用user角色)

要实现多轮对话,你需要维护一个持久的对话历史列表,每次交互都把用户的提问和AI的回复依次加入这个列表,再将完整的历史传给API。

修改后的完整代码

import requests
import json

# 替换为你的API密钥和端点
API_KEY = "your-api-key-here"
API_ENDPOINT = "https://api.openai.com/v1/chat/completions"

def generate_chat_completion(messages, model="gpt-3.5-turbo", temperature=1, max_tokens=100):
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {API_KEY}",
    }

    data = {
        "model": model,
        "messages": messages,
        "temperature": temperature,
        "max_tokens": max_tokens
    }

    response = requests.post(API_ENDPOINT, headers=headers, data=json.dumps(data))

    if response.status_code == 200:
        return response.json()["choices"][0]["message"]
    else:
        raise Exception(f"Error {response.status_code}: {response.text}")

# 初始化对话历史,可添加system提示设定AI角色(可选)
conversation_history = [
    {"role": "system", "content": "你是一个友好的助手,会用简洁易懂的语言回答问题。"}
]

while True:
    input_text = input("Enter your message: ")
    # 将用户输入加入对话历史
    conversation_history.append({"role": "user", "content": input_text})
    
    # 调用API获取回复
    assistant_message = generate_chat_completion(conversation_history)
    print(assistant_message["content"])
    
    # 将AI的回复加入对话历史,供下一轮使用
    conversation_history.append(assistant_message)

关键修改点说明

  • 持久化对话历史:将conversation_history定义在循环外,每次交互都向其中追加用户消息和AI回复
  • 角色修正:用户消息使用user角色,AI回复使用assistant角色,系统提示使用system角色(可选,用来定义AI的行为风格)
  • 函数返回值调整:让函数返回完整的AI消息对象(包含role和content),方便直接加入对话历史
  • 修复max_tokens逻辑:原代码中先将max_tokens设为100,再判断是否为None,逻辑错误,直接在函数参数中设置默认值更合理

额外注意事项

  • 对话历史会占用token额度,当历史过长时可能触发token超限错误,你可以根据需求实现历史截断逻辑(比如只保留最近几轮对话)
  • temperature参数可以控制AI回复的随机性,值越低回复越稳定,值越高越有创意

内容的提问来源于stack exchange,提问作者dairy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:45:28