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

【进阶版】基于Ollama和RAG,本地部署“懂业务”的大模型

昨天我们一行代码没写,在本地部署了懂业务的大模型。没看到的宝子点这里【零代码】基于Ollama和RAG,本地部署“懂业务”的大模型
今天我们基于昨天部署的大模型,开发一个简单的问答助手。
在这里插入图片描述
首先,打开AnythingLLM的设置,获取API密钥
在这里插入图片描述
接下来,我们基于fastapi开发一个简单页面

from fastapi import FastAPI, HTTPException
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
import requests
import os
from typing import Optionalapp = FastAPI(title="AnythingLLM问答系统")# 挂载静态文件目录
app.mount("/static", StaticFiles(directory="."), name="static")# 添加CORS中间件
app.add_middleware(CORSMiddleware,allow_origins=["*"],allow_credentials=True,allow_methods=["*"],allow_headers=["*"],
)# API配置
API_KEY = "KQXMB8E-XXXXXXX"
API_BASE_URL = "http://localhost:3001"  # AnythingLLM默认地址
WORKSPACE_SLUG = "ollama"  # 工作区class QuestionRequest(BaseModel):question: strclass AnswerResponse(BaseModel):answer: strsuccess: boolerror: Optional[str] = None@app.get("/")
async def root():# 读取并返回前端HTML文件with open("index.html", "r", encoding="utf-8") as file:html_content = file.read()return HTMLResponse(content=html_content, headers={"Content-Type": "text/html; charset=utf-8"})@app.get("/health")
async def health_check():return {"status": "healthy"}@app.post("/api/chat", response_model=AnswerResponse)
async def chat_with_anythingllm(request: QuestionRequest):try:# 构建AnythingLLM API端点endpoint = f"{API_BASE_URL}/api/v1/workspace/{WORKSPACE_SLUG}/chat"# 准备请求数据payload = {"message": request.question,"mode": "chat"}# 设置请求头headers = {"Content-Type": "application/json","Authorization": f"Bearer {API_KEY}"}# 调用AnythingLLM APIresponse = requests.post(endpoint, json=payload, headers=headers, timeout=30)# 检查响应状态if response.status_code == 200:data = response.json()# 打印原始响应数据用于调试# print(f"AnythingLLM原始响应: {data}")# AnythingLLM通常返回 {"textResponse": "...", "sources": [...], ...} 格式answer = data.get("textResponse") or "抱歉,我没有理解您的问题。"return AnswerResponse(answer=answer, success=True)else:error_msg = f"AnythingLLM API返回错误: {response.status_code} - {response.text}"return AnswerResponse(answer="", success=False, error=error_msg)except requests.exceptions.ConnectionError:error_msg = "无法连接到AnythingLLM服务,请确保服务正在运行且可通过 http://localhost:3001 访问"return AnswerResponse(answer="", success=False, error=error_msg)except requests.exceptions.Timeout:error_msg = "请求AnythingLLM服务超时"return AnswerResponse(answer="", success=False, error=error_msg)except Exception as e:error_msg = f"处理请求时发生错误: {str(e)}"return AnswerResponse(answer="", success=False, error=error_msg)if __name__ == "__main__":import uvicornuvicorn.run(app, host="0.0.0.0", port=8000)

运行 python main.py
浏览器打开链接:http://localhost:8000
在这里插入图片描述

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

相关文章:

  • SAP固定损耗数量或者固定用量,损耗率的方案
  • 建设部监理工程师网站有什么网站做微商
  • 做外贸网站要注意什么济南疾控最新发布
  • 【案例】UI 管理框架
  • 佛山网站建设外贸西安工商注册平台官网
  • 做网站编程要学什么中韩双语网站制作价格
  • 宁波专业的网站建设仕德伟做的网站
  • 商标设计网站猪八戒快速做效果图的网站叫什么
  • 推广网站哪家做的好文登区住房和城乡建设局网站
  • Oracle 数据库性能追踪与数据整合实践指南
  • 成都做网站公司一个完整的产品运营方案
  • 嘉兴做外贸网站的公司seo推广人员
  • 做网站需要知道哪些事情怎样做网络推广效果好视频
  • 建设网站程序忻州市中小企业局网站
  • 最长上升子序列(LIS)
  • 网站被禁止访问怎么打开小型的企业网站
  • Vue实现全局设置一个刷新按钮 只刷新当面路由页面 不跳转操作功能
  • 网站开发外包协议电子商务网站方案
  • 【IC】NoC设计入门 -- 验证
  • 如何在税局网站上做税种认定推广普通话手抄报简单漂亮
  • Swift 自动引用计数
  • Delta数据结构:深入剖析高效数据同步的奥秘
  • 网站制作教程视频湖北外贸网站建设价格
  • wordpress模板展示网站制作网线视频
  • 康巴什住房和城乡建设局网站网站域名建设
  • 多线程常见面试题清单
  • Java资源持续监控(依赖 jps)
  • 北海哪家公司做网站建设研发做校招的网站有哪些
  • 建设电影播放网站盐城网站建设渠道合作
  • 关于 Vite 中环境变量(.env 文件)自定义打包的使用