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

Read more

[科研实践] VS Code (Copilot) + Overleaf (使用 Overleaf Workshop 插件)

[科研实践] VS Code (Copilot) + Overleaf (使用 Overleaf Workshop 插件)

科研圈写文档常用 Latex 环境,尤其是 Overleaf 它自带的 AI 润色工具 Writefull 太难用了。如果能用本地的 CoPilot / Cursor 结合 Overleaf,那肯定超高效! 于是我们找到了 VS Code 里的 Overleaf Workshop 插件。这里已经安装好了,没装过的同学可以直接点击 “安装” 安装后左边会出现 Overleaf Workshop 的图标: 点击右边的“+”: Overleaf 官网需要登录,这里我们通过 cookie 调用已登录账号的 API: 回到主界面,右键点击 “检查”: 打开检查工具后,找到 “网络”(Network)窗口,搜索 “/project” /project 如果首次加载没内容,刷新页面就能看到

微搭低代码MBA培训管理系统07——用户登录

微搭低代码MBA培训管理系统07——用户登录

目录 * 前情回顾与本节目标 * 第一步:数据与变量准备 * 1.1 数据源配置 * 1.2 门户页变量设置 * 第二步:门户页初始化与 User 对象构造 * 第三步:门户卡片跳转与拦截 * 总结 前情回顾与本节目标 在上一讲中,我们完成了页面管理与角色权限的分配。至此,系统的“骨架”和“规则”已经搭建完毕。 本节我们将正式打通用户登录与鉴权闭环。为了最大化提升开发效率,我们将直接启用云开发的“手机号验证码登录”功能。当用户通过身份验证进入门户页时,我们再根据其手机号拉取完整的组织架构和权限信息,实现千人千面的工作台入口控制。 本节核心目标: 1. 拥抱云原生认证:基于云开发内置的 $w.auth.currentUser 获取已登录用户的手机号。 2. 构造全局 User 对象:在门户页初始化时,聚合用户的部门、岗位、角色与权限信息。

scorecardpy信用评分卡:从零到精通的Python开发指南

在当今数字化金融时代,scorecardpy信用评分卡已成为风控领域的重要工具。作为Python生态中专为信用风险评估设计的专业库,它让传统复杂的评分卡开发变得简单高效。无论你是金融从业者还是数据分析新手,都能通过本指南快速掌握这一强大工具。 【免费下载链接】scorecardpyScorecard Development in python, 评分卡 项目地址: https://gitcode.com/gh_mirrors/sc/scorecardpy 🚀 一键安装与高效配置技巧 环境准备与快速部署 scorecardpy支持多种安装方式,满足不同用户需求: 基础安装方法 pip install scorecardpy 最新版本获取 如需体验最新功能,可通过以下命令安装开发版本: pip install git+https://gitcode.com/gh_mirrors/sc/scorecardpy 核心依赖与环境检查 安装完成后,建议验证环境配置: import scorecardpy as sc print(f&

【花雕动手做】拆解CASIC MOTOR机器人底盘14.8V无刷减速电机

【花雕动手做】拆解CASIC MOTOR机器人底盘14.8V无刷减速电机

为了做个机器人底盘,配合铝合金麦克纳姆轮使用,收了一款14.8V的无刷减速电机。这里试试简单的拆解,了解相关情况。 一、电机型号与基本信息 型号:CASIC MOTOR ZWS37U-CS-001 品牌:CASIC MOTOR(深圳航天电机系统有限公司) 类型:带行星减速箱的无刷直流电机(BLDC),内置编码器(多色线为编码器信号线) 二、核心参数(铭牌标注) 三、主要特色 无刷设计:无电刷磨损,寿命长、噪音低、效率高,适合长时间连续运行。 集成减速箱:行星减速结构,大幅提升输出扭矩,同时保持电机本体的高转速特性。 内置编码器:多色线(黄 / 红 / 黑 / 蓝 / 绿 / 白)为霍尔或增量编码器信号线,支持精准速度与位置控制。 高扭矩密度:在 37mm 直径的紧凑体积下,