from 公众号:程序员more
OpenWebUI通过HTTP方式提供对外接口,使得开发者可以通过HTTP方式快速对接拥有RAG能力的模型基座。
01 OpenWebUI配置app key
OpenWebUI使用BearerToken机制对 API 请求进行身份验证。从 Open WebUI 中的“设置>帐户”获取 API 密钥,或者使用 JWT(JSON Web 令牌)进行身份验证。如下图获取API Key
其中JWT是有时效性限制,API密钥是永久的。
02 API使用说明
注意每次请求都需要将API KEY密钥设置到HTTP请求头
Authorization: Bearer eyJhbGci***
基础接口功能包括列出在OpenWebUI注册的模型和模型进行聊天。
接口作用 |
列出所有已经配置在OpenWebUI的模型 |
地址 |
/api/models |
方法 |
GET |
请求示例 |
127.0.0.1:3000/api/models |
响应结果 |
|
以下是简单的聊天调用,文章下面会介绍关联知识库的聊天调用方式
接口作用 |
调用后端模型进行聊天 |
|
地址 |
/api/chat/completions |
|
方法 |
POST |
|
请求示例 |
|
|
参数说明 |
model |
/api/models接口返回的模型id |
role |
user=⽤户输⼊ assistant=AI助⼿的回复 system=系统,即设定AI的⾏为 tool=⼯具调⽤返回值 |
|
content |
提问内容 |
|
响应结果 |
|
|
参数说明 |
message.content |
响应内容 |
聊天中使用流式响应
接口作用 |
在聊天中使用流式响应,结果不是一次性返回,而是分段返回,参数中设置stream等于true |
地址 |
/api/chat/completions |
方法 |
POST |
请求示例 |
|
响应结果 |
数据以流式响应: data: {"id": "deepseek-r1:1.5b-fc918971-baab-4f2f-a359-cafb9c104ab2", "created": 1741331179, "model": "deepseek-r1:1.5b", "choices": [{"index": 0, "logprobs": null, "finish_reason": null, "delta": {"content": "\\u7684\\u5173\\u952e"}}], "object": "chat.completion.chunk"} …… data: {"id": "deepseek-r1:1.5b-0fae48d0-162d-4cef-ba42-54ef12a27c4f", "created": 1741331179, "model": "deepseek-r1:1.5b", "choices": [{"index": 0, "logprobs": null, "finish_reason": null, "delta": {"content": "\\u3002"}}], "object": "chat.completion.chunk"} …… data: {"id": "deepseek-r1:1.5b-33a7f78c-0052-47d7-a674-0560458b8107", "created": 1741331179, "model": "deepseek-r1:1.5b", "choices": [{"index": 0, "logprobs": null, "finish_reason": "stop", "delta": {}}], "object": "chat.completion.chunk", "usage": {"response_token/s": 20.83, "prompt_token/s": 52.63, "total_duration": 99595060200, "load_duration": 1483943500, "prompt_eval_count": 5, "prompt_tokens": 5, "prompt_eval_duration": 95000000, "eval_count": 2042, "completion_tokens": 2042, "eval_duration": 98014000000, "approximate_total": "0h1m39s", "total_tokens": 2047, "completion_tokens_details": {"reasoning_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0}}} …… data: [DONE] |
请求中附带知识库文件或者知识库集合
接口作用 |
请求中附带知识库文件或者知识库集合 |
地址 |
/api/chat/completions |
方法 |
POST |
请求参数指定知识文件 |
|
请求参数指定知识集合 |
|
接下来了解知识库上传相关API。
03 RAG部分
Retrieval Augmented Generation (RAG) 功能通过整合外部来源的数据来增强响应。下面将说明知识库创建与知识库数据上传相关接口,如没有说明统一的请求头Content-Type=application/json
上传知识库的流程:
1. 创建知识库,接口:/api/v1/knowledge/create;
2. 上传知识库文件,接口:/api/v1/files/
3. 关联知识库与知识库文件,接口:/api/v1/knowledge/{知识库id}/file/add
接口与参数的简单说明
创建知识库 |
|
接口 |
POST /api/v1/knowledge/create |
请求参数 |
{"name":"知识库名称","description":"知识库说明","access_control":null} |
响应结果 |
|
上传知识库文件 |
|
接口 |
POST /api/v1/files/ |
请求参数 |
文件以二进制流上传 请求头:content-type:multipart/form-data; |
响应结果 |
|
上传知识库文件 |
|
接口 |
POST /api/v1/knowledge/{id}/file/add id对应/api/v1/knowledge/create接口响应的知识库id |
请求参数 |
{"file_id":"77cb080c-5de8-4ffb-9304-d658e44a4dfb"} file_id对应/api/v1/files接口响应的id |
响应结果 |
|
如果想实现多轮会话,可以看/api/v1/chats/{chat_id},它主要负责管理会话,包括查询(GET)、新增(POST),主要通过chat_id关联/api/chat/completions。
如果想了解其他的接口我们可以通过在浏览器打开调试窗口查看网络调用情况。
平台声明:以上文章转载于《CSDN》,文章全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,仅作参考。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。