跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI

使用 Gradio 快速构建对话式 AI 应用

基于 Gradio 框架结合 OpenAI SDK 实现流式对话功能。利用 ChatInterface 自动生成交互界面,chat_stream 函数处理多轮上下文与流式响应,无需编写前端代码即可部署本地 AI 助手。重点在于初始化部分变量及正确管理历史消息以维持对话连贯性。

编程诗人发布于 2026/4/11更新于 2026/9/159 浏览
使用 Gradio 快速构建对话式 AI 应用

Gradio 的妙处在于它把前端 UI 封装得几乎透明,让你能专注于后端逻辑。借助 ChatInterface,我们无需编写任何 HTML、CSS 或 JS,就能自动获得包含输入框、发送按钮和滚动记录聊天的完整界面。

整个交互流程其实很直观:用户输入触发函数调用,返回结果后直接渲染到界面上。核心逻辑在于 chat_stream 函数,它负责整理多轮上下文并处理流式响应。

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,
    )
    
    partial = ""
    for chunk in stream:
        delta = chunk.choices[0].delta.content or ""
        partial += delta
        yield partial

demo = gr.ChatInterface(
    fn=chat_stream,
    title="AI 智能助手",
    description=,
)

 __name__ == :
    demo.launch(server_name=, server_port=)
"基于 Gradio"
if
"__main__"
"0.0.0.0"
7860

这里有个细节要注意:partial 变量必须在循环外初始化,否则会导致未定义错误。通过遍历 history 列表,我们把之前的对话片段拼接到新的请求中,从而实现多轮记忆。开启 stream=True 后,模型生成的每一个 token 都会通过 yield 实时推送到前端,这样用户就能看到类似 ChatGPT 那种边生成边显示的流畅体验。

启动服务后,浏览器会自动打开本地页面(默认端口 7860),即可开始测试。

运行效果

更多推荐文章

查看全部
  • HTTP Cookie 深入解析:Web 会话追踪机制
  • 2024 AI 商业化实践:GPTs 定制、数字克隆与 AI 绘画变现指南
  • OpenClaw:面向具身智能与机器人操作的多模态大模型框架
  • 昇腾 NPU 部署 CodeLlama 大模型实战指南
  • Spring Boot 4 集成 OpenTelemetry 实现可观测性(Metrics/Traces/Logs)
  • 昇腾平台 DeepSeek-R1 与 Qwen2.5 强化学习训练优化实践
  • 平凡人的努力与坚持:致敬默默前行者
  • 4G Cat.1 模组赋能 AI 教育机器人:算力与物联网融合分析
  • DeepSeek-R1 开源大模型推理优化实战方案
  • Agent Skills 版本控制与管理实战
  • Flutter EWS 组件在鸿蒙系统的适配与实战应用
  • Python Bokeh 交互式 Web 可视化实战指南
  • GitHub Copilot 安装与使用指南
  • OpenClaw 智能体生态布局与核心能力解析
  • Git 入门实战:从零理解版本控制与团队协作
  • 2026 年 AI 技术趋势与普通人发展建议
  • ClawX 可视化 AI 智能体使用指南
  • 前端 EME DRM 防录屏原理及实战代码
  • OpenClaw 本地部署实战:从零搭建可控 AI Agent 框架
  • S3 与 HDFS:对象存储与分布式文件系统对比

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online