当前位置: 首页 > news >正文

【大模型本地对话页面开发】

大模型本地对话页面@大模型本地对话页面开发

大模型本地对话页面

使用gradio、langchain_community开发本地模型对话页面。

安装python模块

pip install gradio
pip install llama-index-llms-ollama

查找是否安装模块

pip list | findstr "模块名称"
比如:pip list | findstr "gradio"

丰富版

import gradio as gr
from langchain_community.llms import Ollama
import time
import json
from datetime import datetimedef msgs(model, msg, temperature=0.7, max_tokens=512):"""    调用Ollama模型生成回复    """try:llm = Ollama(base_url="http://host.docker.internal:11434",model=model,temperature=temperature,num_predict=max_tokens)response = llm.invoke(msg)return responseexcept Exception as e:return f"错误: {str(e)}"
# 创建Gradio界面
with gr.Blocks(title="大模型对话页面") as demo:gr.Markdown("# 🤖 大模型对话助手")gr.Markdown("与本地部署的大语言模型进行对话,支持多种模型选择")# 存储聊天历史chat_history = gr.State([])with gr.Row():with gr.Column(scale=1):gr.Markdown("### ⚙️ 设置")# 模型选择下拉框model_choice = gr.Dropdown(choices=["deepseek-v3.1:671b-cloud", "gpt-oss:20b", "llama3.2-vision:latest", "qwen3:8b", "deepseek-r1:la", "qwen2.5vl:latest"],value="llama3.2-vision:latest",label="🧠 选择模型")# 参数设置temperature = gr.Slider(minimum=0.0,maximum=1.0,value=0.7,step=0.1,label="🌡️ 温度 (创造性)")max_tokens = gr.Slider(minimum=100,maximum=2048,value=512,step=100,label="📝 最大长度")system_prompt = gr.Textbox(label="⚙️ 系统提示词",placeholder="可选:为模型提供上下文或指令",lines=13)with gr.Row(scale=1):# 清除按钮# clear_btn = gr.Button("🗑️ 清除对话", variant="secondary")# # 导出按钮# export_btn = gr.Button("💾 导出对话", variant="secondary")clear_btn = gr.Button("🗑️ 清除对话",variant="secondary")# 导出按钮export_btn = gr.Button("💾 导出对话",variant="secondary")with gr.Column(scale=3):# 聊天历史记录chatbot = gr.Chatbot(label="对话记录",height=500,show_label=True)# 用户输入框msg = gr.Textbox(label="输入消息",placeholder="请输入您的问题... (按Enter发送,Shift+Enter换行)",lines=3)with gr.Row():submit_btn = gr.Button("发送", variant="primary")stop_btn = gr.Button("停止", variant="stop")# 导出文件export_file = gr.File(label="导出文件", visible=False)def respond(message, chat_history, model, temperature, max_tokens, system_prompt):"""处理用户消息并生成回复"""if message == "":return "", chat_history, None# 如果有系统提示词,将其添加到消息前if system_prompt:full_message = f"System: {system_prompt}\n\nUser: {message}"else:full_message = message# 添加用户消息到聊天历史chat_history.append((message, None))yield "", chat_history, Nonetry:# 调用模型生成回复response = msgs(model, full_message, temperature, max_tokens)# 逐字显示回复以增加交互感bot_message = ""for char in response:bot_message += charchat_history[-1] = (message, bot_message)yield "", chat_history, Nonetime.sleep(0.01)  # 控制打字速度except Exception as e:error_msg = f"错误: {str(e)}"chat_history[-1] = (message, error_msg)yield "", chat_history, Nonedef clear_history():"""清除聊天历史"""return [], []def export_chat(chat_history):"""导出聊天记录为JSON文件"""if not chat_history:return None# 创建聊天记录的副本并添加时间戳export_data = {"timestamp": datetime.now().isoformat(),"chat_history": chat_history}# 生成文件名filename = f"chat_export_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"# 写入文件with open(filename, "w", encoding="utf-8") as f:json.dump(export_data, f, ensure_ascii=False, indent=2)return filename# 绑定事件submit_btn.click(respond,[msg, chatbot, model_choice, temperature, max_tokens, system_prompt],[msg, chatbot, export_file])msg.submit(respond,[msg, chatbot, model_choice, temperature, max_tokens, system_prompt],[msg, chatbot, export_file])clear_btn.click(clear_history,None,[chatbot, chat_history])export_btn.click(export_chat,[chatbot],[export_file])
if __name__ == "__main__":# 获取环境变量中的端口或使用默认端口# port = int(os.environ.get("GRADIO_SERVER_PORT", 7861))demo.launch(server_name="localhost", server_port=7878, share=False)

##丰富版效果展示
在这里插入图片描述

简单版

import gradio as gr
from langchain_community.llms import Ollama
def msgs(model, msg,temperature=0.7, max_tokens=512):"""调用Ollama模型生成回复"""try:llm = Ollama(base_url="http://host.docker.internal:11434",model=model,temperature=temperature,num_predict=max_tokens)response = llm.invoke(msg)return f"<strong>你的问题:{msg}<strong>\n<strong>模型的回答:{response}<strong>"except Exception as e:return f"错误: {str(e)}"interface=gr.Interface(fn=msgs,inputs=[gr.Dropdown(choices=["deepseek-v3.1:671b-cloud", "gpt-oss:20b", "llama3.2-vision:latest", "qwen3:8b", "deepseek-r1:la", "qwen2.5vl:latest"],value="llama3.2-vision:latest",label="🧠 选择模型"),gr.Textbox(label="输入消息",lines=3,placeholder="输入你的问题")],outputs=gr.Textbox(label="聊天对话框", lines=20),#outputs=gr.ChatInterface.
)
if __name__ == "__main__":interface.launch(server_port=8081)

简单版效果展示

在这里插入图片描述

gradio使用方法地址

gradio地址

http://www.dtcms.com/a/551096.html

相关文章:

  • SAP SuccessFactors 发展历史详解
  • 深圳龙华汽车站附近有做网站建设的俄文淘宝网站建设
  • 男女做那个的视频网站酒店网站设计
  • SAP PP BOM批量创建功能分享
  • python字符串处理与正则表达式--之八
  • 吴堡网站建设费用阿里云免费网站建设
  • lyh教大前端
  • 重庆移动网站建设html代码翻译器
  • 摄影师网站html5注册wordpress发送邮件
  • 郑州做网站云极游戏推广吧
  • 查网站ip地址网页升级紧急通知狼人
  • 青岛百度网站排名优化做网站怎么切片
  • wap网站开发公司企业宣传片制作教程
  • 怎样免费建企业网站吗wordpress首页标题修改
  • seo整站优化费用宝塔为什么要安装Wordpress
  • 天河怎样优化网站建设优化网站找哪家
  • 网站建设有几种方式美丽深圳公众号二维码原图
  • 模版 网站需要多少钱崂山网站建设
  • 广州网站定做教程wordpress知识
  • 零代码网站开发工具新乡网站建设哪家专业
  • 网站建设迁移方案厦门市城市建设档案馆网站
  • 织梦网站评论后"提示验证码错误请点击验证码图片更新验证码刚做的单页网站怎么预览
  • 做鞋的贸易公司网站怎么做好网站模板有后台
  • 东南亚营销型网站建设与网络推广重庆大渡口营销型网站建设公司推荐
  • 免费制作logo的网站如何开心设计一个网站
  • 重庆有名的网站建设编程 毕业设计代做网站
  • 网站模板设计师要求网络应用服务管理
  • 中国建设电工立网站微信网站地址
  • 网站 平均加载时间宜兴网站开发
  • 湖南英文网站建设芜湖弋江区最新消息