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

DeepSeek智能对话助手项目

目录:

    • 1、效果图
    • 2、实现代码
    • 3、温度和TopK的作用对比

1、效果图

在这里插入图片描述

2、实现代码

# import gradio as gr# def reverse_text(text):
#     return text[::-1]# demo=gr.Interface(fn=reverse_text,inputs="text",outputs="text")# demo.launch(share="True")import gradio as gr
import openai
from typing import List, Any, Iterator# 配置DeepSeek API
api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
api_base = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"client = openai.OpenAI(api_key=api_key, base_url=api_base)def chat_stream(message: str, history: List[List[str]], temperature: float = 0.7,top_k: int = 40,system_prompt: str = "你是一个有帮助的助手。") -> Iterator[Any]:"""流式输出DeepSeek响应"""messages = [{"role": "system", "content": system_prompt}]# 添加历史记录for human_msg, ai_msg in history:messages.append({"role": "user", "content": human_msg})messages.append({"role": "assistant", "content": ai_msg})# 添加当前消息messages.append({"role": "user", "content": message})# 调用API进行流式输出response = client.chat.completions.create(model="Qwen/Qwen2.5-VL-72B-Instruct",messages=messages,temperature=temperature,top_p=1-(1.0/top_k) if top_k > 1 else 1.0,stream=True)full_response = ""for chunk in response:if chunk.choices and len(chunk.choices) > 0:content = chunk.choices[0].delta.contentif content:full_response += contentyield full_response# 自定义CSS样式
custom_css = """
#chatbot {height: 600px !important;border-radius: 10px;border: 1px solid #e0e0e0;font-family: "Microsoft YaHei", "微软雅黑", sans-serif;
}
.message {padding: 10px;border-radius: 5px;margin: 5px 0;font-size: 15px;line-height: 1.6;
}
.user-message {background-color: #e3f2fd;
}
.bot-message {background-color: #f5f5f5;
}
.gradio-container {font-family: "Microsoft YaHei", "微软雅黑", sans-serif;
}
"""# 创建Gradio界面
with gr.Blocks(title="DeepSeek 智能助手", css=custom_css, theme=gr.themes.Soft()) as demo:gr.Markdown("""# 🤖 DeepSeek 智能助手欢迎使用 DeepSeek 智能助手!您可以通过右侧的设置来调整 AI 的行为。""")with gr.Row():with gr.Column(scale=4):chatbot = gr.Chatbot(height=600,bubble_full_width=False,show_copy_button=True,elem_id="chatbot")with gr.Row():msg = gr.Textbox(label="输入消息",placeholder="在这里输入您的问题...",scale=8,container=False)submit_btn = gr.Button("发送", variant="primary", scale=1)with gr.Row():clear = gr.Button("清除历史", variant="secondary")with gr.Column(scale=1):system_prompt = gr.Textbox(label="系统提示词",value="你是一个有帮助的助手。",lines=3)temperature = gr.Slider(minimum=0.1,maximum=1.0,value=0.7,step=0.1,label="温度",info="较高的值会使输出更加随机,较低的值会使输出更加确定")top_k = gr.Slider(minimum=1,maximum=100,value=40,step=1,label="Top K",info="控制输出词汇的多样性")def user(user_message, history):return "", history + [[user_message, None]]def bot(history, temp, top_k_val, sys_prompt):history[-1][1] = ""for response in chat_stream(history[-1][0], history[:-1], temp, top_k_val, sys_prompt):history[-1][1] = responseyield historymsg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(bot, [chatbot, temperature, top_k, system_prompt], chatbot)submit_btn.click(user, [msg, chatbot], [msg, chatbot], queue=False).then(bot, [chatbot, temperature, top_k, system_prompt], chatbot)clear.click(lambda: None, None, chatbot, queue=False)if __name__ == "__main__":demo.launch()

3、温度和TopK的作用对比

在这里插入图片描述

在这里插入图片描述
温度和TopK的调节可以使用大模型的回答更加精准和多样化。

相关文章:

  • 行列式的线性性质(仅限于单一行的加法拆分)
  • Python 操作MySQL数据库
  • 每日leetcode(昨天赶飞机没做,今天补)
  • Java序列化与反序列化详细介绍
  • QT写槽函数的注意事项
  • js实现音频的录制
  • LangGraph-agent-天气助手
  • 地下综合管廊 3D 可视化平台
  • 微信小程序数据接收
  • uniapp-商城-67-shop(3-品牌信息显示,弹窗显示完整品牌信息,弹窗拨打电话、地图定位)
  • 安卓11 不带谷歌包默认桌面布局
  • HarmonyOS赋能套件介绍
  • 聊一聊手动测试与探索性测试的区别
  • mysql统计数据库大小
  • 从Embedding到多模态检索:AI知识库构建的进阶路线图
  • 2021-10-28 C++判断完全平方数
  • 学习STC51单片机14(芯片为STC89C52RC)
  • 点云补全技术深度解析:从原理到实践
  • JWT生成的token的构成部分
  • 5.Java 面向对象编程入门:类与对象的创建和使用​
  • 宿迁公司做网站/今日最新闻
  • 电子商务网站开发形式有/重庆seo排名
  • 做门户网站maosi/长春网站搭建
  • 域名抢注网站源码/关键词排名优化技巧
  • 做网站的几个软件/怎么自己创建一个网页
  • 打开上海发布/在线网站seo诊断