Windows部署deepseek R1训练数据后通过AnythingLLM当服务器创建问答页面

news/2025/3/19 12:40:15/文章来源:https://www.cnblogs.com/hiit/p/18771920

如果要了解Windows部署Ollama 、deepseek R1请看我上一篇内容。

这是接上一篇的。

AnythingLLM是一个开源的全栈AI客户端,支持本地部署和API集成。它可以将任何文档或内容转化为上下文,供各种语言模型(LLM)在对话中使用。以下是关于Windows环境下使用AnythingLLM API的一些重要信息:

一、安装与配置AnythingLLM API

安装与配置AnythingLLM

  • 系统要求:支持Windows操作系统,建议至少8GB内存,推荐16GB或更高。
  • 下载和安装:访问AnythingLLM官方网站,下载对应的Windows安装包,按照提示完成安装。
  • 确保已安装 Python 3.9 及以上版本,并配置好环境变量。
  • 安装必要的依赖库,如 requests,可以通过 pip 命令安装:pip install requests

API调用

  • 生成密钥:首先需要点击左下角第四个小扳手图标进入设置生成密钥,用于API的身份验证。
  • 获取Workspace的slug:列出所有的workspace并找到对应的slug,用于指定API操作的工作空间。
  • 调用API:使用Python等编程语言,通过HTTP请求调用AnythingLLM的API。例如,使用requests.post()方法发送POST请求到指定的API端点,如http://your_ip:3001/api/v1/workspace/{slug}/chat,其中{slug}应替换为实际的工作空间。
  • 请求头和参数:在请求头中设置Authorization为生成的密钥,Content-Typeapplication/json。请求体中包含message(要询问的问题)和其他可选参数,如mode(chat或query)。

普通示例代码

以下是一个使用Python调用AnythingLLM API的示例代码:
import requestsdef ask_anythingllm(question, slug, api_key):url = f"http://your_ip:3001/api/v1/workspace/{slug}/chat"headers = {"Authorization": f"Bearer {api_key}","Content-Type": "application/json","accept": "application/json"}data = {"message": question,"mode": "chat"  # 可选chat / query模式
    }response = requests.post(url, headers=headers, json=data)if response.status_code == 200:result = response.json()answer = result['textResponse'].split('</think>').strip()sources = result.get('sources', [])return answer, sourceselse:return f"Error: {response.text}", []<q refer="3"></q># 示例调用
api_key = "your_api_key"  # 替换成你自己的apikey
slug = "your_workspace_slug"  # 替换成你自己的workspace slug
question = "你的问题"
answer, sources = ask_anythingllm(question, slug, api_key)
print("回答:", answer)
print("来源:", [src['title'] for src in sources])

流式处理代码示例

  • 指定 AnythingLLM API 的 URL,例如:url = "http://your_ip:3001/api/v1/workspace/<workspace_name>/stream-chat",其中 your_ip 替换为部署 AnythingLLM 的服务器 IP,workspace_name 替换为实际的工作空间名称。
  • 设置请求头,包含授权信息和内容类型:headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json", "accept": "text/event-stream"}
  • 构建请求体,包含问题和其他参数:data = {"message": question, "mode": "query", "max_tokens": 1024, "stream": True}
  • 使用 requests.post() 方法发送 POST 请求,设置 stream=True 以启用流式响应:response = requests.post(url, headers=headers, json=data, stream=True)
  • 逐行读取响应内容,进行处理:for chunk in response.iter_lines(): if chunk: print(chunk.decode("utf-8"))
import requestsdef ask_anythingllm(question, workspace_name, api_key):url = f"http://your_ip:3001/api/v1/workspace/{workspace_name}/stream-chat"headers = {"Authorization": f"Bearer {api_key}","Content-Type": "application/json","accept": "text/event-stream"}data = {"message": question,"mode": "query","max_tokens": 1024,"stream": True}with requests.post(url, headers=headers, json=data, stream=True) as response:if response.status_code == 200:for chunk in response.iter_lines():if chunk:print(chunk.decode("utf-8"))else:print(f"Error: {response.status_code}: {response.text}")# 示例调用
api_key = "YOUR_API_KEY"  # 替换成你自己的 API 密钥
workspace_name = "YOUR_WORKSPACE_NAME"  # 替换成你的工作空间名称
question = "你的问题"
ask_anythingllm(question, workspace_name, api_key)

注意事项

  • 确保 Windows 防火墙已开放 AnythingLLM 服务所使用的端口(默认为 3001),以便外部访问。
  • 在实际应用中,建议添加错误处理和异常捕获机制,以应对网络问题或其他潜在错误。
  • 流式输出适用于实时交互和长文本生成场景,可以提高用户体验和响应速度。

通过以上步骤,可以在Windows环境下成功调用AnythingLLM的API,实现与本地知识库的交互。

二、写一个问答网页

步骤概述

  1. 安装必要的库:使用 Flask 来构建 Web 应用,同时使用 requests 库来调用 Windows AnythingLLM API。
  2. 创建 Flask 应用:搭建一个简单的客服网页,接收用户输入,调用 API 获取回复,并将回复展示给用户。
from flask import Flask, render_template_string, request
import requestsapp = Flask(__name__)# 配置 Windows AnythingLLM API 的地址和参数
API_URL = "http://your-anythingllm-api-url"  # 请替换为实际的 API 地址
HEADERS = {"Content-Type": "application/json"
}@app.route('/', methods=['GET', 'POST'])
def index():if request.method == 'POST':user_input = request.form.get('user_input')# 构建请求体data = {"input": user_input}try:# 调用 APIresponse = requests.post(API_URL, headers=HEADERS, json=data)response.raise_for_status()api_response = response.json().get('response', '无有效回复')except requests.RequestException as e:api_response = f"请求出错: {e}"else:api_response = ""return render_template_string('''<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>客服网页</title></head><body><h1>客服网页</h1><form method="post"><label for="user_input">你的问题:</label><br><textarea id="user_input" name="user_input" rows="4" cols="50"></textarea><br><input type="submit" value="提交"></form>{% if api_response %}<h2>回复:</h2><p>{{ api_response }}</p>{% endif %}</body></html>''', api_response=api_response)if __name__ == '__main__':app.run(host='127.0.0.1', port=5000)

 

三、配置Cpolar内网穿透让其他人访问

配置Cpolar内网穿透

  1. 下载并安装Cpolar:从Cpolar官网下载适用于Windows的Cpolar客户端,并进行安装。
  2. 登录Cpolar Web UI:在浏览器中访问http://localhost:9200,使用注册的Cpolar账号登录。
  3. 创建隧道:在Cpolar Web UI中创建一个新的隧道,配置如下:
    • 隧道名称:自定义,如anythingllm-api
    • 协议:选择HTTP
    • 本地地址:填写3001(AnythingLLM的API端口)。
    • 域名类型:选择随机域名(免费使用)或升级为固定二级子域名。
  4. 获取公网地址:隧道创建成功后,在“在线隧道列表”中复制生成的公网URL,用于访问客服网页。

测试与访问

  1. 本地测试:确保问答网页在本地可以通过http://localhost:3001或其他本地地址正常访问。
  2. 公网访问:使用Cpolar生成的公网地址,在任何设备的浏览器中访问问答网页,验证是否能正常与AnythingLLM的API交互。

注意事项

  • 安全性:确保API密钥的安全,避免泄露。可以考虑使用HTTPS协议和添加身份验证机制来增强安全性。
  • 稳定性:长时间运行服务时,确保系统的稳定性,避免服务中断。
  • 带宽与性能:根据实际需求,考虑是否需要升级Cpolar套餐以提高带宽和性能。
通过以上步骤,即可在Windows上将AnythingLLM的API结合Cpolar内网穿透,创建一个可供其他人访问的问答网页。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901468.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

变量数据类型流程控制

常量变量 常量 1.概述:在代码的运行过程中,值不会发生改变的数据 2.分类:整数常量:所有整数小数常量:所有带小数点的2.5 1.5 2.0字符常量:带单引号的 单引号中必须有且只能有一个内容1(算) 11(不算) (不算) a1(不算) (算) (两个空格不算)写一个tab键(算) 字符…

Vue2-自定义创建项目、ESLint、Vuex及综合案例购物车

Vue2自定义创建项目 基于VueCli自定义创建项目架子 步骤:安装VueCLI脚手架npm i @vue/cli -g 可以通过vue --version 判断是否下载VueCLI在某个文件夹中创建vue项目vue create 项目名称 (项目名中不能包含大写字母)选择Manually select features选择Babel(语法降级)、Ro…

yum install -y devtoolset-8-gcc*

如果执行结果为上面这个结果的话,需要执行以下操作 yum install centos-release-scl*修改CentOS-SCLo-scl.repo文件 baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/ 和 gpgcheck=0修改CentOS-SCLo-scl-rh.repo文件和上面一样查看 [root@iZbp153shsqfoddljmkit4…

几个技巧,教你去除文章的 AI 味!

给大家分享一些快速去除文章 AI 味的小技巧,有些是网上被分享过的,也有些是我个人的经验。学会之后,无论是写工作文案、毕业设计、自媒体文章,还是平时生活中写写好评,都是非常轻松的。最近有不少朋友在利用 AI 写毕业设计论文,几秒钟一篇文章就刷出来的,爽的飞起。 结果…

Sci Chart中的XyDataSeries与UniformXyDataSeries

在 SciChart 中,XyDataSeries 和 UniformXyDataSeries 是两种用于处理数据序列的核心类,主要差异体现在数据存储方式、性能优化及适用场景上。 以下是具体对比: 1. 数据存储与结构差异 **XyDataSeries<TX, TY>** 需要同时存储 X 和 Y 值的完整坐标对。例如,对于每个数…

强化学习基础_基于价值的强化学习

Action-Value Functions 动作价值函数 折扣回报(Discounted Return) 折扣回报 Ut 是从时间步 t 开始的累积奖励,公式为: Rt 是在时间步 t 获得的奖励。γ 是折扣因子(0<γ<1),用于减少未来奖励的权重。这是因为未来的奖励通常不如当前奖励重要,例如在金融领域,未…

USB杂谈

一、USB控制器 OHCI 1.0、1.1控制器 UHCI:1.0、1.1控制器 EHCI 2.0控制器 XHCI 3.0控制器 EHCI 2.0控制器 HID:人机交互接口,鼠标、手柄 、键盘、扫描枪USB协议中对集线器的层数是有限制的,USB1.1规定最多为5层,USB2.0规定最多为7层。 理论上,一个USB主控制器最多可接127个…

2025年3月中国数据库排行榜:PolarDB夺魁傲群雄,GoldenDB晋位入三强

2025年3月排行榜解读出炉,榜单前四现波动,PolarDB时隔半年重返榜首、GoldenDB进入前三,此外更有一些新星产品表现亮眼!欢迎阅读、一起盘点~阳春三月,万物复苏。2025年3月中国数据库流行度排行榜的发布,不仅展现了中国数据库企业在技术创新、生态建设和应用深化方面的显著…

# 20241902 2024-2025-2 《网络攻防实践》第四周作业

1.实验内容 通过本次实验,在搭建的实验环境中完成TCP/IP协议栈重点协议的攻击实验,包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击,并熟悉wireshark、netwox和ettercap等软件的操作。 2.实验过程 实验1 ARP缓存欺骗攻击 本实验中Kali为…

【Azure Fabric Service】分享使用Visual Studio 2022发布中国区Service Fabric服务应用的办法

问题描述 使用Visual Studio 2022如何发布Service Fabric到中国区云服务呢? 因为使用VS2022中的插件无法创建Service Fabric Cluster服务。那么,是否又比较好的替代方案呢?问题解答 是的,有替代方案。 除了昨天介绍使用的Powershell命令外( 【Azure Fabric Service】演示使…