网站建设对电子商务的作用重庆可做网站 APP
2026/4/18 13:21:41 网站建设 项目流程
网站建设对电子商务的作用,重庆可做网站 APP,微信网站收钱吗,百度代理服务器使用 Chainlit Ollama 快速搭建本地 AI 聊天应用 大家好#xff01;今天分享一个超级简单的本地 AI 聊天界面实现方案#xff1a;Chainlit Ollama。 无需部署复杂的后端#xff0c;只需本地运行 Ollama#xff0c;再用几行 Python 代码#xff0c;就能拥有一个支持模型切…使用 Chainlit Ollama 快速搭建本地 AI 聊天应用大家好今天分享一个超级简单的本地 AI 聊天界面实现方案Chainlit Ollama。无需部署复杂的后端只需本地运行 Ollama再用几行 Python 代码就能拥有一个支持模型切换、流式输出的美观聊天界面。效果如下实际运行时会实时流式显示回复支持检测本地所有 Ollama 模型自动过滤出生成型模型用于聊天支持一键切换模型流式输出体验接近 ChatGPT下面一步步教大家从零开始搭建。一、环境准备1. 安装 Ollama前往官网下载并安装 Ollamahttps://ollama.com/download安装完成后打开终端运行ollama --version看到版本号即表示安装成功。2. 拉取模型必须Ollama 默认没有模型需要手动拉取。我们推荐以下生成型模型任选其一即可# 推荐中文能力强的模型ollama pull qwen2.5# 阿里通义千问 2.5中文极强ollama pull qwen2.5:7b# 更小更快版本# 或者经典的 Llama3ollama pull llama3 ollama pull llama3:8b# 其他可选ollama pull gemma2 ollama pull phi3拉取完成后运行ollama list查看已安装模型。3. 安装 Python 依赖创建一个新文件夹如ollama-chainlit进入文件夹后执行pipinstallchainlit httpx这是本项目所需的所有第三方库非常轻量。二、完整代码将以下代码保存为app.py文件名随意但后缀必须是.pyimportchainlitasclimporthttpximportjson# 同步获取 Ollama 模型列表defget_ollama_models():try:withhttpx.Client(timeout10.0)asclient:responseclient.get(http://localhost:11434/api/tags)response.raise_for_status()dataresponse.json()return[m[name]formindata[models]]exceptExceptionase:print(f获取模型列表失败:{e})return[]OLLAMA_MODELSget_ollama_models()# 过滤生成模型排除常见的 embedding 模型GENERATIVE_MODELS[mforminOLLAMA_MODELSifembednotinm.lower()andbgenotinm.lower()]ifnotGENERATIVE_MODELS:print(警告未检测到生成模型请拉取如 ollama pull qwen2.5 或 ollama pull llama3)DEFAULT_MODELllama3# fallbackelse:DEFAULT_MODELGENERATIVE_MODELS[0]# Ollama 流式生成asyncdefollama_chat_stream(model:str,messages:list):payload{model:model,messages:messages,stream:True}asyncwithhttpx.AsyncClient(timeoutNone)asclient:try:asyncwithclient.stream(POST,http://localhost:11434/api/chat,jsonpayload)asresponse:asyncforlineinresponse.aiter_lines():ifnotline.strip():continuedatajson.loads(line)ifmessageindataandcontentindata[message]:yielddata[message][content]ifdata.get(done):breakexceptExceptionase:yieldf\n\n[错误: 调用 Ollama 失败 -{str(e)}]# Chainlit 应用cl.on_chat_startasyncdefon_chat_start():all_models_info, .join(OLLAMA_MODELS)ifOLLAMA_MODELSelse无gen_models_info, .join(GENERATIVE_MODELS)ifGENERATIVE_MODELSelse无请拉取生成模型如 qwen2.5、llama3 等awaitcl.Message(contentf欢迎使用 Chainlit Ollama\nf检测到所有模型:{all_models_info}\nf可用于聊天的生成模型:{gen_models_info}).send()ifnotGENERATIVE_MODELS:awaitcl.Message(content提示当前只有 embedding 模型无法正常聊天。请运行 ollama pull qwen2.5 或其他生成模型后重启。).send()returncl.user_session.set(current_model,DEFAULT_MODEL)iflen(GENERATIVE_MODELS)1:actions[cl.Action(namemodel_select,valuemodel,labelf切换到{model})formodelinGENERATIVE_MODELS]awaitcl.Message(contentf当前模型: **{DEFAULT_MODEL}**\n选择其他模型,actionsactions).send()else:awaitcl.Message(contentf当前模型: **{DEFAULT_MODEL}**唯一生成模型).send()cl.action_callback(model_select)asyncdefon_model_select(action:cl.Action):new_modelaction.value cl.user_session.set(current_model,new_model)awaitcl.Message(contentf模型已切换为: **{new_model}**).send()cl.on_messageasyncdefon_message(message:cl.Message):ifnotGENERATIVE_MODELS:awaitcl.Message(content未检测到生成模型无法回复。).send()returnmodel_namecl.user_session.get(current_model,DEFAULT_MODEL)messagescl.user_session.get(messages,[])messages.append({role:user,content:message.content})# 创建流式消息response_msgcl.Message(content)awaitresponse_msg.send()# 显示正在生成提示response_msg.contentf[{model_name}] 正在生成...awaitresponse_msg.update()# 流式输出full_responseasyncfortokeninollama_chat_stream(model_name,messages):full_responsetokenawaitresponse_msg.stream_token(token)# 保存历史messages.append({role:assistant,content:full_response})cl.user_session.set(messages,messages)# 最终更新awaitresponse_msg.update()三、运行项目确保 Ollama 服务正在运行安装后一般会自动启动如果没有可以手动运行ollama serve。在代码所在目录打开终端执行chainlit run app.py -w-w参数表示自动刷新浏览器开发时很方便。运行成功后浏览器会自动打开http://localhost:8000你将看到欢迎界面和模型列表。点击右侧的模型按钮即可切换输入问题开始聊天四、常见问题模型切换按钮不显示只有检测到多个生成模型时才会显示切换按钮。如果只有一个模型会直接显示“唯一生成模型”。提示“正在生成…”一直不消失检查 Ollama 是否正常运行模型是否拉取成功。可以在终端运行ollama list确认。想去掉“正在生成…”提示可以修改on_message函数最后部分把注释掉的代码取消response_msg.contentf[{model_name}]\n\n{full_response}awaitresponse_msg.update()这样最终只会显示模型名 回复内容。五、总结整个项目只有不到 100 行代码却实现了自动检测本地模型模型切换流式输出聊天历史保持非常适合本地玩大模型、快速搭建私人助手、学习 Chainlit 框架。喜欢的话别忘了点赞 收藏 关注三连哦有问题欢迎在评论区留言我会尽快回复

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询