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

简单的聊天机器人助手

ollama和gradio 创建简单的聊天机器人助手

  • 聊天机器人
    • 环境准备

聊天机器人

初学AI大模型,用聊天机器人是了一下大模型调用

环境准备

首先在本机安装ollama,这个很简单,到官网下载ollama windows安装包安装即可,然后需要用ollama 下载大模型,ollama支持很多大模型。
官网:https://ollama.com/search

然后可以编辑代码了代码如下:
这里用的依赖需要下载一下

pip install openai gradio
import requests from openai import OpenAI import gradio as gr import logging # 配置日志 logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) # 初始化 OpenAI 客户端 def get_openai_client() -> OpenAI: """创建并返回 OpenAI 客户端实例""" return OpenAI( api_key="ollama", base_url="http://localhost:11434/v1", timeout=30 ) # 获取本地模型列表 def get_local_models(): try: response = requests.get( "http://localhost:11434/api/tags", timeout=30) if response.status_code == 200: response_data = response.json() models = [model['name'] for model in response_data.get("models", [])] logger.info(f"获取到 {len(models)} 个模型") return models else: return [] except Exception as e: logger.error(f"获取模型列表失败: {e}") return [] def is_chat_supported(model: str, client: OpenAI) -> bool: """测试模型是否支持聊天功能""" try: client.chat.completions.create( model=model, messages=[ {"role": "system", "content": "你是人工智能助手。"}, {"role": "user", "content": "Hello"} ], stream=False, max_tokens=10 ) return True except Exception as e: logger.warning(f"模型 {model} 不支持聊天: {e}") return False # 过滤支持聊天的模型 def filter_chat_models(models): client = get_openai_client() chat_models = [model for model in models if is_chat_supported(model, client)] logger.info(f"支持聊天的模型: {chat_models}") return chat_models # 实现流式回答 def get_response(text, model_name, history): msgs = [{"role": "system", "content": "你是人工智能助手。"}] for msg in history: print(msg['content'][0]['text']) print(msg['role']) msgs.append({"role": msg['role'], "content": msg['content'][0]['text']}) msgs.append({"role":"user","content": f"{text}"}) print(msgs) client = get_openai_client() response = client.chat.completions.create( model=model_name, messages=msgs, # messages=[ # {"role": "system", "content": "你是人工智能助手。"}, # { # "role": "user", # "content": f"{text} " + "以下是历史对话" + f"{history}" # } # ], stream=True, ) return response # 聊天响应 def chat_response(message, history, model_name): print(message, history) results = get_response(message, model_name, history) contents = "" for chunk in results: if chunk.choices[0].delta.content is not None: contents += chunk.choices[0].delta.content yield contents def main(): """主函数""" print("=" * 50) print("正在初始化 Ollama 聊天应用...") print("=" * 50) chat_models = get_local_models() if not chat_models: print("未找到本地模型,请确保 Ollama 已启动并且已下载模型") return print(chat_models) models = filter_chat_models(chat_models) if not models: print("未找到支持聊天的模型") return print(models) default_model = models[0] print(f"默认使用模型: {default_model}") print(f"可用模型: {models}") print("=" * 50) #创建 Gradio 自定义聊天界面并应用自定义CSS with gr.Blocks(title="Ollama Chat") as demo: gr.Markdown("# Ollama 本地聊天助手") chat_interface = gr.ChatInterface(chat_response, additional_inputs=[ gr.Dropdown( label="选择模型", choices=models, value=default_model, allow_custom_value=True ) ],cache_examples=False) demo.launch(share=False, server_name="127.0.0.1", server_port=7860) if __name__ == "__main__": main()

效果如下:

http://www.jsqmd.com/news/461502/

相关文章:

  • 【交换机、路由器与终端设备间信息传递原理及过程总结】
  • 分享GEO源头厂家推荐,几家服务优质的品牌别错过 - 工业品牌热点
  • 企业ICT交换拓扑标准化落地 实现高确定性基础设施管理
  • Python数据分析项目实战(020)——NumPy应用案例1
  • 唐山华冶钢管制造口碑如何,产品在河北好用吗,值得推荐吗 - 工业设备
  • 个人信息保护合规审计人员(中级)理论知识与能力综合测试试卷
  • “买“龙虾第一期:OpenClaw@华为云
  • 三种Repository的写法
  • 总结沧州旭岳管道推荐,其在山东、北京地区有哪些优势项目? - myqiye
  • 第1课:开篇扫盲——OpenClaw是什么?能帮你解决什么问题?(入门必看)
  • 封神!IDEA↔Kiro 双向跳转插件实操指南|一键切换+光标精准同步,开发效率翻倍
  • 探讨广西高压胶管大型厂家怎么选择,诚悦橡塑怎么样? - 工业推荐榜
  • 2026年鲜椒兔公司在行业内的发展究竟处于何种地位?
  • 第2课:环境搭建——15分钟从零安装,快速启动你的第一个AI代理
  • 长春全屋定制天花板|伟伦家居,全国品牌+源头工厂,老百姓货比三家必选靠谱品牌 - 品牌企业推荐师(官方)
  • 原生一体架构与智能双模:企业软件在AI时代的进化之路
  • 靠谱的小龙虾酱料推荐哪家最受欢迎
  • 人心所至,2026十大热词数据报告
  • 2026年荣成看牙怎么选?揭秘威海卓雅口腔医院的数字化诊疗与安全标准 - 资讯焦点
  • 2026年口碑好的过热保护器品牌推荐:电机保护器/马达保护器/电流保护器优质厂商精选推荐(口碑) - 品牌宣传支持者
  • KIHU快狐|全面屏一体机85寸智能分屏教学会议多内容同步展示屏
  • 电视租赁在企业中的应用
  • 【Gromacs】分子动力学的mdp文件解析
  • 海外身份规划哪家移民公司专业广东双众移民实力解答 - 资讯焦点
  • 超详细教程:电脑怎么深度清理垃圾,释放硬盘空间提速必备!
  • Linux - 进程间通信(IPC)管道 - [BORUTO]
  • 攻防世界 crypto题base64
  • 2026年比较好的温控器品牌推荐:微波炉变压器温控器厂家采购参考指南 - 品牌宣传支持者
  • 亲测好用 10个一键生成论文工具测评:专科生毕业论文+科研写作必备神器
  • 【模拟电子电路--天线】