【创新实训】AnythingLLM 接口调用(以Python为例)
AnythingLLM 是一个开源平台,可以将文档、资源和笔记转化为一个智能的、可交互的知识库,就像拥有一个私有化的大模型。同时,AnythingLLM 提供了一套强大的 API,让开发者能够将其。为了保护 AnythingLLM 实例不被随意访问,因此要使用 API密钥进行验证身份。集成到自己的应用程序中。工具->API 密钥。
·
AnythingLLM 接口调用
AnythingLLM 是一个开源平台,可以将文档、资源和笔记转化为一个智能的、可交互的知识库,就像拥有一个私有化的大模型。同时,AnythingLLM 提供了一套强大的 API,让开发者能够将其核心问答和管理功能集成到自己的应用程序中。
前提准备
- 一个安装并成功运行的 AnythingLLM 实例;
- 由于我的实例运行在服务器上,所以我需要使用服务器对应的地址和端口号进行访问;
- 对于HTTP请求需要十分了解,尤其得熟悉
GET
和POST
请求,以及Headers
、Body
、JSON
数据格式等; - 编程环境,我将使用Python进行访问,此外需要安装
requests
库等依赖库。
一、找到访问AnythingLLM的访问方式
- 由于 AnythingLLM 内置了 Swagger UI来展示其API 文档,我们可以通过访问
http://xxx.xxx.xxx.xxx:xxxx/api/docs
来查看 AnythingLLM Developer API 文档。 - 文档中列出了所有可用的API端点、每个端点所需的参数、请求体格式、响应格式等。
- HTTP请求方法:
GET
、POST
、PUT
等。 - 路径:每个API 的具体地址,包含一些参数,比如
{slug}
和{docName}
等。 - Parameters:需要传入的参数。
- Request Body:比如对于
POST
请求,描述需要发送的JSON
数据的结构。 - Response:描述成功或失败时的响应,包括返回的数据结构等。
- HTTP请求方法:
如图:
- 我们需要使用大模型的问答功能,因此找到
Workspaces
,使用其中的/v1/workspace/{slug}/chats
和/v1/workspace/{slug}/stream-chats
是进行问答的窗口。{slug}
处用于选择工作区,将想要使用的工作区名称(标识符)填入即可- 可以使用
GET
或POST
请求
二、获取 API Key
为了保护 AnythingLLM 实例不被随意访问,因此要使用 API密钥进行验证身份。
- 在
设置
中打开工具->API 密钥
,并点击生成新的API密钥
创建一个新的密钥:
- 获得了一个新密钥后,复制密钥的内容,用于填充步骤一中访问大模型问答功能所需的的
{slug}
:
三、使用Python实现对API的调用
3.1 准备工作
- 依赖库:
pip install request
- API相关:
- ANYTHINGLLM_BASE_URL:AnythingLLM实例的地址
- API_KEY:API 密钥
- WORKSPACE_SLUG:工作区的名称(标识符)
3.2 编写代码
import requests
# --- 配置工作 ---
# 替换成 AnythingLLM 实例地址
ANYTHINGLLM_BASE_URL = "http://xxx.xxx.xxx.xxx:xxxx"
# 替换成 API 密钥
API_KEY = "xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx"
# 替换成要交互的工作区标识符 slug
WORKSPACE_SLUG = "test1"
# 要问的问题
USER_QUESTION = "你好?"
# --- 形成 API 端点 ---
chat_endpoint = f"{ANYTHINGLLM_BASE_URL}/api/v1/workspace/{WORKSPACE_SLUG}/chat"
# --- 形成 请求头 ---
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# --- 形成 请求体 ---
data = {
"message": USER_QUESTION,
"mode": "query" # 或者 "chat" 如果需要上下文
# 根据 API 文档可能需要包含 history 等其他字段
# "history": []
}
try:
# --- 发送 POST 请求 ---
response = requests.post(chat_endpoint, headers=headers, json=data, timeout=120) # 设置超时时间
response.raise_for_status() # 如果请求失败 (状态码 >= 400),则抛出异常
# --- 处理响应 ---
result = response.json()
print("API 调用成功!")
# 打印或使用返回的答案,具体结构参考 API 文档
# print(json.dumps(result, indent=2, ensure_ascii=False))
if 'textResponse' in result and result['textResponse']:
print("回答:", result['textResponse'])
elif 'error' in result and result['error']:
print("错误:", result['error'])
else:
print("收到未知响应格式:", result)
except requests.exceptions.RequestException as e:
print(f"API 调用失败: {e}")
except Exception as e:
print(f"处理响应时发生错误: {e}")
3.3 运行与调试
- 运行上述代码。
- 如果连接成功,则会发出一个
你好?
的提问,不出意料会收到API 响应的内容,这说明可以成功的调用大模型的问答功能了。 - 如果连接失败,那就得检查一下以下内容:
- 实例是否正在运行
- 实例的地址是否正确,端口号是否正确
- API Key是否正确,是否正在使用(没有被停止使用)
- 选择的工作区是否存在,名称是否正确
- 如果连接成功,则会发出一个
成功调用的结果:
总之,关键在于:确保实例运行并且网络可达 -> 获取 API 密钥 -> 理解 API 文档 -> 构造并发送请求 -> 处理响应与错误
更多推荐
所有评论(0)