【创新实训】Python调用AnythingLLM接口实战指南
AnythingLLM 接口调用
AnythingLLM 是一个开源平台,可以将文档、资源和笔记转化为一个智能的、可交互的知识库,就像拥有一个私有化的大模型。同时,AnythingLLM 提供了一套强大的 API,让开发者能够将其核心问答和管理功能集成到自己的应用程序中。
前提准备
- 一个安装并成功运行的 AnythingLLM 实例;
- 由于我的实例运行在服务器上,所以我需要使用服务器对应的地址和端口号进行访问;
- 对于HTTP请求需要十分了解,尤其得熟悉
GET
和POST
请求,以及Headers
、Body
、JSON
数据格式等; - 编程环境,我将使用Python进行访问,此外需要安装
requests
库等依赖库。
一、找到访问AnythingLLM的访问方式
http://xxx.xxx.xxx.xxx:xxxx/api/docs
来查看 AnythingLLM Developer API 文档。GET
、POST
、PUT
等。{slug}
和{docName}
等。POST
请求,描述需要发送的JSON
数据的结构。如图:
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
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 密钥 -> 理解 API 文档 -> 构造并发送请求 -> 处理响应与错误
作者:6_ShiaoYoung