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

相关推荐
Hi202402172 小时前
Vortex CUDA 生态适配:让 CUDA C、CUTLASS 与 Triton 在 RISC-V GPGPU 上运行
人工智能·risc-v·gpgpu
龙腾AI白云5 小时前
AI检索增强生成(RAG):解决大模型幻觉的核心落地技术
数据库·人工智能·机器学习·知识图谱
云票5 小时前
企业对接AI合同审查系统的工程实践
人工智能
admin and root5 小时前
「AI安全篇」实战AntiDebug自动化JS逆向加解密MCP
javascript·人工智能·网络安全·自动化·漏洞挖掘·cnvd·src赏金
智能RPA5 小时前
智能体自动化平台与主数据管理平台(MDM)对比评测
人工智能·自动化·agent·rpa
跨境小彭6 小时前
Temu拉美站点铺货实操复盘:手动复制痛点与批量自动化解决方案
服务器·人工智能·搜索引擎·自动化·temu电商运营
封印师请假去地球钓鱼6 小时前
边解边变的问题:从“决策依赖“一词出发
人工智能·算法
AI搅拌机6 小时前
ComfyUI管理大师:安全稳定升级+切换指定版本!
人工智能
浅安的邂逅6 小时前
20929-OpenAI 一天踩三脚急刹:暂停前沿训练、叫停 Astra、披露越权访问澳政府网站
人工智能·大模型·ai编程·行业动态·ai日报
Qyr997 小时前
2026-2032直接芯片液冷板市场爆发式增长:AI算力浪潮下的热管理核心赛道
大数据·人工智能