OpenWebUI如何对外提供HTTP接口?

article/2025/8/23 16:23:58

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

响应结果

{	"data": [{		"id": "deepseek-r1:1.5b",		"name": "deepseek-r1:1.5b",		"object": "model",		"created": 1741313196,		"owned_by": "ollama",		"ollama": {			"name": "deepseek-r1:1.5b",			"model": "deepseek-r1:1.5b",			"modified_at": "2025-02-26T09:59:46.3066414+08:00",			"size": 1117322599,			"digest": "a42b25d8c10a841bd24724309898ae851466696a7d7f3a0a408b895538ccbc96",			"details": {				"parent_model": "",				"format": "gguf",				"family": "qwen2",				"families": ["qwen2"],				"parameter_size": "1.8B",				"quantization_level": "Q4_K_M"			},			"urls": [0]		},		"actions": []	}]}

以下是简单的聊天调用,文章下面会介绍关联知识库的聊天调用方式

接口作用

调用后端模型进行聊天

地址

/api/chat/completions

方法

POST

请求示例

{      "model": "deepseek-r1:1.5b",      "messages": [        {          "role": "user",          "content": "你好啊"        }      ]}

参数说明

model

/api/models接口返回的模型id

role

user=⽤户输⼊

assistant=AI助⼿的回复

system=系统,即设定AI的⾏为

tool=⼯具调⽤返回值

content

提问内容

响应结果

{    "id": "deepseek-r1:1.5b-09322e4f-ba07-42fc-894c-c64424240670",    "created": 1741313942,    "model": "deepseek-r1:1.5b",    "choices": [        {            "index": 0,            "logprobs": null,            "finish_reason": "stop",            "message": {                "content": "<think>\n\n</think>\n\n你好!很高兴见到你,有什么我可以帮忙的吗?",                "role": "assistant"            }        }    ],    "object": "chat.completion",    "usage": {        "response_token/s": 22.73,        "prompt_token/s": 41.32,        "total_duration": 890745200,        "load_duration": 19290900,        "prompt_eval_count": 5,        "prompt_tokens": 5,        "prompt_eval_duration": 121000000,        "eval_count": 17,        "completion_tokens": 17,        "eval_duration": 748000000,        "approximate_total": "0h0m0s",        "total_tokens": 22,        "completion_tokens_details": {            "reasoning_tokens": 0,            "accepted_prediction_tokens": 0,            "rejected_prediction_tokens": 0        }    }}

参数说明

message.content

响应内容

 聊天中使用流式响应

接口作用

在聊天中使用流式响应,结果不是一次性返回,而是分段返回,参数中设置stream等于true

地址

/api/chat/completions

方法

POST

请求示例

{      "model": "deepseek-r1:1.5b",      "messages": [        {          "role": "user",          "content": "什么是java"        }      ],      "stream":true}

响应结果

图片

数据以流式响应:

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

请求参数指定知识文件

{      "model": "gpt-4-turbo",      "messages": [        {"role": "user", "content": "Explain the concepts in this document."}      ],      "files": [        {"type": "file", "id": "your-file-id-here"}      ]}

请求参数指定知识集合

{      "model": "gpt-4-turbo",      "messages": [        {"role": "user", "content": "Provide insights on the historical perspectives covered in the collection."}      ],      "files": [        {"type": "collection", "id": "your-collection-id-here"}      ]}

接下来了解知识库上传相关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}

响应结果

{    "id": "知识库Id:e13f471f-cc6c-4df1-9210-8eb586bf8b6b",    "user_id": "e42bf055-03e4-421e-894d-c18a58b6b73d",    "name": "test",    "description": "for test",    "data": null,    "meta": null,    "access_control": null,    "created_at": 1741317031,    "updated_at": 1741317031,    "files": null}

上传知识库文件

接口

POST /api/v1/files/

请求参数

文件以二进制流上传

请求头:content-type:multipart/form-data;

响应结果

{    "id": "77cb080c-5de8-4ffb-9304-d658e44a4dfb",    "user_id": "e42bf055-03e4-421e-894d-c18a58b6b73d",    "hash": "93737981707e6327ca3adf45a7ae11bfd33bc7fcbb0de82c85c390efa1a2f01c",    "filename": "日志.txt",    "data": {        "content": "文件上传内容"    },    "meta": {        "name": "日志.txt",        "content_type": "text/plain",        "size": 5587,        "data": {},        "collection_name": "file-77cb080c-5de8-4ffb-9304-d658e44a4dfb"    },    "created_at": 1741317221,    "updated_at": 1741317221}

上传知识库文件

接口

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

响应结果

{    "id": "e13f471f-cc6c-4df1-9210-8eb586bf8b6b",    "user_id": "e42bf055-03e4-421e-894d-c18a58b6b73d",    "name": "test",    "description": "for test",    "data": {        "file_ids": [            "77cb080c-5de8-4ffb-9304-d658e44a4dfb"        ]    },    "meta": null,    "access_control": null,    "created_at": 1741317031,    "updated_at": 1741317226,    "files": [        {            "id": "77cb080c-5de8-4ffb-9304-d658e44a4dfb",            "user_id": "e42bf055-03e4-421e-894d-c18a58b6b73d",            "hash": "93737981707e6327ca3adf45a7ae11bfd33bc7fcbb0de82c85c390efa1a2f01c",            "filename": "日志.txt",            "path": "/app/backend/data/uploads/77cb080c-5de8-4ffb-9304-d658e44a4dfb_日志.txt",            "data": {                "content": "文件内容"            },            "meta": {                "name": "日志.txt",                "content_type": "text/plain",                "size": 5587,                "data": {},                "collection_name": "e13f471f-cc6c-4df1-9210-8eb586bf8b6b"            },            "access_control": null,            "created_at": 1741317221,            "updated_at": 1741317221        }    ]}

 如果想实现多轮会话,可以看/api/v1/chats/{chat_id},它主要负责管理会话,包括查询(GET)、新增(POST),主要通过chat_id关联/api/chat/completions。

如果想了解其他的接口我们可以通过在浏览器打开调试窗口查看网络调用情况。


http://www.hkcw.cn/article/rlyaJuPHhT.shtml

相关文章

中使馆回应美将撤销中国留学生签证 坚决反对歧视做法

中使馆回应美将撤销中国留学生签证 坚决反对歧视做法!中国驻美国大使馆发言人于5月29日针对美国务院发表的声明作出回应,该声明称将撤销有关中国在美留学生的签证。发言人表示,中方坚决反对美方这一政治性、歧视性的做法。这种行为将严重损害中国在美留学人员的正当合法权益…

【Markdown基础语法】

Markdown语法 顶部 一、标题#~###### 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 二、粗体 **粗体** 粗体字 三、斜体** 斜体字 四、删除字~~~~ 删除文字​ 五、分割线***、—、___ 六、无序列表-、、* 1 2 3 七、有序列表数字后加点1. 第一项第二项 …

ROS云课基础篇-03-apt趣味小应用-250529

基本看完01和02&#xff0c;还想继续&#xff0c;十分魔幻&#xff0c;来点有趣好玩的吧。 ROS云课基础篇-01-Linux-250529-CSDN博客 ROS云课基础篇-02-C-250529-CSDN博客 在Ubuntu中&#xff0c;有许多有趣且实用的小应用可以为系统增添乐趣和功能性。以下是一些类似xeyes和…

上海老电梯更新费用规定 公积金可提取支付

上海老电梯更新费用规定 公积金可提取支付。为支持职工筹集住宅老旧电梯更新费用,改善居住条件,上海市住房公积金管委会近日印发《关于上海市住房公积金支持老旧电梯更新有关政策的通知》,将于2025年7月1日起施行。根据通知规定,住宅老旧电梯更新项目经业主依法表决通过,小…

网络编程之网络编程预备知识

网络编程预备知识 1. 网络编程 1.1 网络通信 通信/通讯需要具备两个基本条件&#xff1a; 物理媒介&#xff08;物理层面&#xff09; 网线&#xff0c;光纤 协议&#xff08;软件层面&#xff09;网络通信协议 1.2 网络协议层次模型 层次&#xff1a;把不同的功能封装成…

Spring Boot+Activiti7入坑指南初阶版

介绍  Activiti 是一个轻量级工作流程和业务流程管理 (BPM) 平台,面向业务人员、开发人员和系统管理员。其核心是一个超快且坚如磐石的 Java BPMN 2 流程引擎。它是开源的,并根据 Apache 许可证分发。Activiti 可以在任何 Java 应用程序、服务器、集群或云中运行。它与 Spri…

信创改造选择C86,相比于ARM架构有什么优势?

随着信息技术应用创新&#xff08;信创&#xff09;产业的快速发展&#xff0c;信创改造已成为我国信息技术产业升级的重要方向。信创改造的核心目标是实现信息技术的自主可控&#xff0c;保障国家信息安全&#xff0c;同时推动国产软硬件在各行业的广泛应用。 2025年作为信创产…

20250529-C#知识:运算符重载

C#知识&#xff1a;运算符重载 运算符重载能够让我们像值类型数据那样使用运算符对类或结构体进行运算&#xff0c;并且能够自定义运算逻辑。 1、运算符重载及完整代码示例 作用是让自定义的类或者结构体能够使用运算符运算符重载一定是public static的可以把运算符看成一个函…

【AI面试秘籍】| 第24期:Transformers / LLM的词表应该选多大?

在构建和训练Transformers以及大型语言模型 (LLM) 时&#xff0c;词表 (Vocabulary) 大小的选择是一个至关重要且常常令人困惑的问题。它不仅直接影响模型的性能&#xff0c;还关系到模型的计算效率和内存占用。那么&#xff0c;当面试官抛出这个问题时&#xff0c;我们应该如何…

一文清晰理解目标检测指标计算

一、核心概念 1.交并比IoU 预测边界框与真实边界框区域的重叠比&#xff0c;取值范围为[0,1] 设预测边界框为&#xff0c;真实边界框为 公式&#xff1a; IoU计算为两个边界框交集面积与并集面积之比&#xff0c;图示如下 IoU值越高&#xff0c;表示预测边界框与真实边界框的对…

一文讲懂fork函数(c语言linux)

c语言的fork函数是拿来创建子进程的, 进程 pcb(process control block) 代码和数据 子进程中的代码和数据与父进程的一致(共享父进程的代码和数据),没有自己的代码和数据. 如果父进程或者子进程要修改数据,操作系统就会把要修改的数据拷贝一份新的,让目标进程修改这份拷贝…

LVDS系列14:Xilinx Ultrascale系可编程输入延迟(四)

本节讲解Ultrascale IDELAYE3的TIME模式仿真&#xff1b;  TIME模式下参数和时序&#xff1a; 必须例化IDELAYCTRL&#xff0c;IDELAYCTRL时钟频率与REFCLK_FREQUEMCY参数相同&#xff1b; 有温度电压补偿&#xff0c;EN_VTC在修改抽头值时拉低&#xff0c;修改完毕后拉高&a…

RTX腾讯通停服后,有哪些兼容Linux及移动端的升级途径?

一、RTX腾讯通停服后的核心挑战 1.国产系统与移动端适配中断 RTX腾讯通停更后无法适配统信UOS、银河麒麟等国产操作系统&#xff0c;原有Windows版本在Linux内核环境下运行异常&#xff0c;且缺乏Android、iOS移动端支持&#xff0c;阻碍跨平台协作。 2.大规模组织架构同步失…

美团启动618大促,线上消费节被即时零售传导到线下了?

首先&#xff0c;从市场推广与消费者吸引的角度来看&#xff0c;美团通过联合众多品牌开展大规模促销活动&#xff0c;并发放高额优惠券包&#xff0c;旨在吸引更多消费者参与购物。这种策略有助于提高平台的活跃度和交易量&#xff0c;同时也能够增强用户粘性。对于消费者而言…

TDengine 运维——巡检工具(安装前预配置)

背景 TDengine 的安装部署对环境系统有一定的依赖和要求&#xff0c;安装部署前需要进行环境预配置操作&#xff0c;本文档旨在说明安装前预配置工具在安装 TDengine 前对环境的预配置内容和工具的使用方法。 预配置工具使用方法 工具支持通过 help 参数查看支持的语法 Usa…

收集飞花令碎片——C语言(数组+函数)

C语言的函数&#xff08;Function&#xff09;是程序的基本构建块&#xff0c;用于封装一段可重用的代码&#xff0c;完成特定任务。函数可以提高代码的模块化、可读性和复用性。 目录 函数库函数标准库头文件自定义函数&#xff08;1&#xff09;基本语法&#xff08;2&#x…

2013-2021年各省电子商务数据

2013-2021年各省电子商务数据 1、时间&#xff1a;2013-2021年 2、来源&#xff1a;国家统计局、各省年鉴 3、指标&#xff1a;统计年度、地区代码、地区名称、电子商务销售额 4、范围&#xff1a;31省 5、指标说明&#xff1a;电子商务销售额是指通过电子商务平台进行商品…

企业级开发的 “技术主权保卫战”:iVX 源码自主性实践指南

在数字化转型的浪潮中&#xff0c;技术主权已成为企业核心竞争力的关键组成部分。iVX 作为全栈可视化开发平台&#xff0c;通过源码自主性实践&#xff0c;为企业构建了从开发工具到行业落地的全栈解决方案&#xff0c;在安全架构、国产替代、合规优势三大领域实现了技术突破与…

Python-12(函数)

函数的主要功能是可以打包代码&#xff0c;最大程度的实现代码的重用&#xff0c;减少冗余代码&#xff0c;可以将不同功能的代码进行封装&#xff0c;从而降低结构的复杂度&#xff0c;提高代码的可读性。 创建和调用函数 使用def语句来定义函数。 def myFunc():print(&quo…

罗德里格斯公式动图演示

一. 罗德里格斯公式形式: R o t ( ω ^ , θ ) e [ ω ] ^ θ I s i n θ [ ω ^ ] ( 1 − c o s θ ) [ ω ^ ] 2 Rot(\hat{\bold{\omega}}, \theta)e^{\hat{\bold{[\omega]}}_{\times} \theta}\bold{I}sin\theta[\hat{\bold{\omega}}]_{\times}(1-cos\theta)[\hat{\bo…