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

基于Gradio与OpenAI API的Python聊天机器人欢迎消息显示异常

问题排查与修复方案

问题根源

  • 字典重复键导致初始消息失效:你写的初始messages里,字典存在两个content键,Python会直接覆盖重复键,这条消息等于无效。而且系统角色(system)是用来给AI设定行为规则的,不是用来显示欢迎语的,欢迎语得用assistant角色。
  • Gradio未自动触发初始输出:默认情况下,Gradio界面只有用户输入内容后才会执行处理函数,网页刚加载时不会主动运行函数,所以输出框初始为空。
  • OpenAI API调用方法错误:使用gpt-3.5-turbo模型必须调用openai.ChatCompletion.create()接口,你当前用的openai.Completion.create()是针对传统文本补全模型的,现在没报错属于巧合,后续大概率会出现功能异常。

修复后的完整代码

import openai
import gradio as gr

# 初始化对话历史,正确添加assistant角色的欢迎语
messages = [
    {"role": "assistant", "content": "Welcome, I am an assistant"}
]

def CustomChatGPT(users_input=None):
    # 网页加载时,无用户输入则返回欢迎语
    if users_input is None:
        return messages[0]["content"]
    
    # 将用户输入加入对话历史
    messages.append({"role": "user", "content": users_input})
    # 调用正确的ChatCompletion接口
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=messages
    )
    ChatGPT_reply = response.choices[0].message.content
    messages.append({"role": "assistant", "content": ChatGPT_reply})
    return ChatGPT_reply

# 使用新版Gradio组件写法,配置默认触发初始输出
demo = gr.Interface(
    fn=CustomChatGPT,
    inputs=gr.Textbox(label="Posez votre question ici"),
    outputs=gr.Textbox(label="Votre réponse"),
    title="FraudAlert",
    allow_flagging="never"
)

demo.launch(share=True)

补充说明

  • 新版Gradio已弃用gradio.outputs.Textbox写法,改用gr.Textbox()兼容性更好。
  • 给函数设置users_input=None的默认值后,网页加载时会自动调用函数返回欢迎语,直接填充到输出框中。
  • 修正了对话角色类型,确保OpenAI API能正确识别对话上下文逻辑。

内容的提问来源于stack exchange,提问作者Céleste

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:57:20