【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})

    partial = ""
    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 的"边生成边显示"的实时对话体验。

相关推荐
带娃的IT创业者5 小时前
GitHub 热门: coleam00/Archon —— 当 AI Agent 学会自我进化
人工智能·github·开源项目·ai agent·智能体·自我进化
云烟成雨TD5 小时前
Agent Scope Java 2.x 系列【11】中间件(Middleware):核心设计
java·人工智能·agent
2401_885665195 小时前
基于OpenCV的模板匹配OCR实战:银行卡与身份证数字识别完整教程
人工智能·python·opencv·计算机视觉·ocr
装不满的克莱因瓶5 小时前
了解3D卷积原理——从空间感知到时空建模的深度学习核心算子
人工智能·pytorch·python·深度学习·机器学习·3d·ai
SuperHeroWu75 小时前
【HarmonyOS 7】鸿蒙应用 AI Coding 工具链 DevEco Code 到 DevEco CLI
人工智能·华为·ai编程·harmonyos·cli·code
虾壳云官方5 小时前
openclaw 一键安装教程(2026年6月15最新)
运维·人工智能·windows·自动化·openclaw
不爱土豆唯爱马铃薯5 小时前
AiPy 是什么?
人工智能
deephub5 小时前
Flash-KMeans:快速且内存高效的精确 K-Means,可在单张 GPU 进行亿级数据的聚类
人工智能·机器学习·kmeans·聚类·rag
渡众机器人5 小时前
第八届全球校园人工智能算法精英大赛-算法应用赛-空地协同侦排挑战赛规则
人工智能·算法
前端不太难5 小时前
从 ChatBot 到 Agent:AI 应用的范式升级
人工智能