【Gradio系列】使用 Gradio 快速构建对话式 AI 应用

【Gradio系列】使用 Gradio 快速构建对话式 AI 应用
import os import gradio as gr from openai import OpenAI client = OpenAI( api_key=os.getenv("OPENAI_API_KEY","sk-"), base_url=os.getenv("OPENAI_BASE_URL", "https://dashscope.aliyuncs.com/compatible-mode/v1"), ) MODEL_NAME = os.getenv("MODEL_NAME", "qwen-plus") SYSTEM_PROMPT = "你是一个友好、专业、谨慎的中文智能助手。" def chat_stream(message, history): messages = [{"role": "system", "content": SYSTEM_PROMPT}] for item in history: if item.get("role") in ["user", "assistant"]: messages.append(item) messages.append({"role": "user", "content": message}) stream = client.chat.completions.create( model=MODEL_NAME, messages=messages, stream=True, temperature=0.7, ) for chunk in stream: delta = chunk.choices[0].delta.content or "" partial += delta yield partial demo = gr.ChatInterface( fn=chat_stream, title="AI智能助手", description="基于Gradio", ) if __name__ == "__main__": demo.launch(server_name="0.0.0.0", server_port=7860)

gr.ChatInterface 本质上是一个高级封装组件,它帮你自动完成了:聊天界面(前端 UI)。自动生成:对话气泡(用户 / AI),输入框,发送按钮,滚动聊天记录,不需要写 HTML / CSS / JS。

ChatInterface 的执行流程:用户输入 → ChatInterface → 调用 fn → 返回结果 → 渲染UI

chat_stream 是整个应用的核心函数,负责把用户输入和历史对话整理成模型需要的 messages 格式,然后调用大模型接口获取回复;其中通过遍历 history 实现多轮上下文记忆,再把当前 message 追加进去发送请求,并开启 stream=True 进行流式调用,最后用 yield 持续返回逐步生成的内容,从而在前端实现类似 ChatGPT 的“边生成边显示”的实时对话体验。

Could not load content