OpenWebUI如何对外提供HTTP接口?

OpenWebUI如何对外提供HTTP接口?

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。

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

Read more

【大模型应用篇】用 OpenClaw + 飞书打造 7x24 小时服务器运维机器人

【大模型应用篇】用 OpenClaw + 飞书打造 7x24 小时服务器运维机器人

前言 本文基于OpenClaw,也是最近超火的可在本地运行的AI Agent网关,记录从零搭建通过飞书对话管理服务器运维机器人的全过程。该机器人支持随时随地通过飞书查看服务器状态、检索日志、管理进程,其核心机制在于:由OpenClaw将聊天平台(飞书等)的消息路由至大模型,模型调用本地工具(如Shell、文件系统、浏览器)执行相应任务,最终将结果自动返回至飞书会话中,实现自动化运维交互。 架构概览 飞书 App (WebSocket 长连接)         ↕ OpenClaw Gateway (服务器上 systemd 常驻)         ↕ AI 模型 (DeepSeek v3.2/GLM 4.7)         ↕ 服务器 Shell (受白名单限制的命令执行) 核心组件: * OpenClaw Gateway:Agent 网关,管理会话、工具调用、渠道连接 * 飞书插件:通过

Coze(扣子)全解析:100个落地用途+发布使用指南,小白也能玩转低代码AI智能体

Coze(扣子)全解析:100个落地用途+发布使用指南,小白也能玩转低代码AI智能体

摘要:Coze(扣子)作为字节跳动推出的低代码AI智能体平台,凭借零代码/低代码拖拽式操作、丰富的插件生态和多平台发布能力,成为小白和职场人高效落地AI应用的首选工具。本文全面汇总Coze可实现的100个实用场景,覆盖个人、学习、办公、运营等7大领域,同时详细拆解其生成形态、发布流程和使用方法,帮你快速上手,把AI能力转化为实际生产力,无需专业开发经验也能轻松搭建专属AI应用。 前言 在AI普及的当下,很多人想借助AI提升效率、解决实际问题,但苦于没有编程基础,无法开发专属AI工具。而Coze(扣子)的出现,彻底打破了这一壁垒——它是字节跳动自主研发的低代码AI智能体平台,无需复杂编码,通过拖拽组件、配置插件、编写简单提示词,就能快速搭建聊天Bot、工作流、知识库等AI应用,并且支持多渠道发布,让你的AI工具随时随地可用。 本文将分为两大核心部分:第一部分汇总Coze可落地的100个实用场景,帮你打开思路,找到适配自己需求的用法;第二部分详细讲解Coze生成的应用形态、发布流程和使用技巧,让你搭建完成后快速落地使用,真正实现“零代码上手,高效用AI”。 第一部分:Coze

一、FPGA到底是什么???(一篇文章让你明明白白)

一句话概括 FPGA(现场可编程门阵列) 是一块可以通过编程来“变成”特定功能数字电路的芯片。它不像CPU或GPU那样有固定的硬件结构,而是可以根据你的需求,被配置成处理器、通信接口、控制器,甚至是整个片上系统。 一个生动的比喻:乐高积木 vs. 成品玩具 * CPU(中央处理器):就像一个工厂里生产好的玩具机器人。它的功能是固定的,你只能通过软件(比如按不同的按钮)来指挥它做预设好的动作(走路、跳舞),但你无法改变它的机械结构。 * ASIC(专用集成电路):就像一个为某个特定任务(比如只会翻跟头)而专门设计和铸造的金属模型。性能极好,成本低(量产时),但一旦制造出来,功能就永远无法改变。 * FPGA:就像一盒万能乐高积木。它提供了大量基本的逻辑单元(逻辑门、触发器)、连线和接口模块。你可以通过“编程”(相当于按照图纸搭建乐高)将这些基本模块连接起来,构建出你想要的任何数字系统——可以今天搭成一个CPU,明天拆了重新搭成一个音乐播放器。 “现场可编程”

OpenClaw配置飞书机器人完整指南

OpenClaw配置飞书机器人完整指南 使用openclaw channels add配置飞书机器人需完成插件安装→飞书应用创建→通道配置→事件订阅→发布应用五个核心步骤,以下是可直接执行的详细流程。 文章目录 * OpenClaw配置飞书机器人完整指南 * 一、前置准备 * 二、通道配置(openclaw channels add) * 方法1:交互式向导配置(推荐) * 方法2:非交互式命令配置(适合脚本) * 方法3:手动编辑配置文件 * 三、事件订阅与发布(关键步骤) * 四、测试与验证 * 五、常见问题排查 一、前置准备 1. 飞书开放平台创建应用(获取凭证) 1. 访问飞书开放平台:https://open.feishu.cn/app 2. 创建企业自建应用,填写名称(如"