跳到主内容

🔗 API 端点

本指南提供了关于如何有效与 API 端点交互以使用我们的模型实现无缝集成和自动化的基本信息。请注意,这是一个实验性设置,未来可能会进行更新以进行增强。

身份验证

为确保对 API 的安全访问,需要进行身份验证 🛡️。您可以使用 Bearer Token 机制对您的 API 请求进行身份验证。从 Open WebUI 中的设置 > 账户获取您的 API 密钥,或者使用 JWT (JSON Web Token) 进行身份验证。

重要 API 端点

📜 获取所有模型

  • 端点GET /api/models

  • 描述:获取通过 Open WebUI 创建或添加的所有模型。

  • 示例:

    curl -H "Authorization: Bearer YOUR_API_KEY" http://localhost:3000/api/models

💬 聊天补全

  • 端点POST /api/chat/completions

  • 描述:作为与 OpenAI API 兼容的聊天补全端点,适用于 Open WebUI 上的模型,包括 Ollama 模型、OpenAI 模型和 Open WebUI Function 模型。

  • Curl 示例:

    curl -X POST http://localhost:3000/api/chat/completions \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "model": "llama3.1",
    "messages": [
    {
    "role": "user",
    "content": "Why is the sky blue?"
    }
    ]
    }'
  • Python 示例:

    import requests

    def chat_with_model(token):
    url = 'http://localhost:3000/api/chat/completions'
    headers = {
    'Authorization': f'Bearer {token}',
    'Content-Type': 'application/json'
    }
    data = {
    "model": "granite3.1-dense:8b",
    "messages": [
    {
    "role": "user",
    "content": "Why is the sky blue?"
    }
    ]
    }
    response = requests.post(url, headers=headers, json=data)
    return response.json()

🦙 Ollama API 代理支持

如果您想直接与 Ollama 模型交互,包括用于生成嵌入或原始提示流,Open WebUI 通过代理路由提供到原生 Ollama API 的透明直通。

🔁 生成补全 (流式)

curl http://localhost:3000/ollama/api/generate -d '{
"model": "llama3.2",
"prompt": "Why is the sky blue?"
}'

📦 列出可用模型

curl http://localhost:3000/ollama/api/tags

🧠 生成嵌入

curl -X POST http://localhost:3000/ollama/api/embed -d '{
"model": "llama3.2",
"input": ["Open WebUI is great!", "Let's generate embeddings."]
}'

这非常适合在 Open WebUI 后使用 Ollama 模型构建搜索索引、检索系统或自定义 Pipelines。

🧩 检索增强生成 (RAG)

检索增强生成 (RAG) 功能允许您通过整合外部数据来增强响应。您将在下面找到通过 API 管理文件和知识库的方法,以及如何在聊天补全中有效使用它们。

上传文件

要在 RAG 响应中使用外部数据,您首先需要上传文件。上传文件的内容会自动提取并存储在向量数据库中。

  • 端点POST /api/v1/files/

  • Curl 示例:

    curl -X POST -H "Authorization: Bearer YOUR_API_KEY" -H "Accept: application/json" \
    -F "file=@/path/to/your/file" http://localhost:3000/api/v1/files/
  • Python 示例:

    import requests

    def upload_file(token, file_path):
    url = 'http://localhost:3000/api/v1/files/'
    headers = {
    'Authorization': f'Bearer {token}',
    'Accept': 'application/json'
    }
    files = {'file': open(file_path, 'rb')}
    response = requests.post(url, headers=headers, files=files)
    return response.json()

将文件添加到知识库

上传后,您可以将文件分组到一个知识库中,或在聊天中单独引用它们。

  • 端点POST /api/v1/knowledge/{id}/file/add

  • Curl 示例:

    curl -X POST http://localhost:3000/api/v1/knowledge/{knowledge_id}/file/add \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"file_id": "your-file-id-here"}'
  • Python 示例:

    import requests

    def add_file_to_knowledge(token, knowledge_id, file_id):
    url = f'http://localhost:3000/api/v1/knowledge/{knowledge_id}/file/add'
    headers = {
    'Authorization': f'Bearer {token}',
    'Content-Type': 'application/json'
    }
    data = {'file_id': file_id}
    response = requests.post(url, headers=headers, json=data)
    return response.json()

在聊天补全中使用文件和知识库

您可以在 RAG 查询中引用单个文件或整个知识库,以获得更丰富的响应。

在聊天补全中使用单个文件

当您想让聊天模型响应的重点聚焦于某个特定文件的内容时,此方法非常有用。

  • 端点POST /api/chat/completions

  • Curl 示例:

    curl -X POST http://localhost:3000/api/chat/completions \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "model": "gpt-4-turbo",
    "messages": [
    {"role": "user", "content": "Explain the concepts in this document."}
    ],
    "files": [
    {"type": "file", "id": "your-file-id-here"}
    ]
    }'
  • Python 示例:

    import requests

    def chat_with_file(token, model, query, file_id):
    url = 'http://localhost:3000/api/chat/completions'
    headers = {
    'Authorization': f'Bearer {token}',
    'Content-Type': 'application/json'
    }
    payload = {
    'model': model,
    'messages': [{'role': 'user', 'content': query}],
    'files': [{'type': 'file', 'id': file_id}]
    }
    response = requests.post(url, headers=headers, json=payload)
    return response.json()
在聊天补全中使用知识库

当查询可能受益于更广泛的上下文或多个文档时,利用知识库来增强响应。

  • 端点POST /api/chat/completions

  • Curl 示例:

    curl -X POST http://localhost:3000/api/chat/completions \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "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"}
    ]
    }'
  • Python 示例:

    import requests

    def chat_with_collection(token, model, query, collection_id):
    url = 'http://localhost:3000/api/chat/completions'
    headers = {
    'Authorization': f'Bearer {token}',
    'Content-Type': 'application/json'
    }
    payload = {
    'model': model,
    'messages': [{'role': 'user', 'content': query}],
    'files': [{'type': 'collection', 'id': collection_id}]
    }
    response = requests.post(url, headers=headers, json=payload)
    return response.json()

这些方法能够通过上传的文件和精心组织的知识库有效利用外部知识,从而使用 Open WebUI API 增强聊天应用程序的能力。无论单独使用文件还是在知识库中使用,您都可以根据您的特定需求定制集成。

使用 Open WebUI 作为统一 LLM 提供商的优势

Open WebUI 提供了众多优势,使其成为开发人员和企业的必备工具。

  • 统一接口:通过一个单一的集成平台,简化您与不同 LLM 的交互。
  • 易于实现:通过全面的文档和社区支持,快速开始集成。
重要

请务必将 ENV 环境变量设置为 dev,以便访问这些服务的 Swagger 文档。如果没有此配置,文档将不可用。

访问 Open WebUI 提供的不同服务的详细 API 文档

应用文档路径
主服务/docs

遵循这些指南,您可以快速集成并开始使用 Open WebUI API。如果您遇到任何问题或疑问,请随时通过我们的 Discord 社区联系我们或查阅常见问题解答。祝您编程愉快! 🌟