跳到主要内容

🔗 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" https://:3000/api/models

💬 聊天补全

  • 端点: POST /api/chat/completions

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

  • Curl 示例:

    curl -X POST https://: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 = 'https://: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 https://:3000/ollama/api/generate -d '{
"model": "llama3.2",
"prompt": "Why is the sky blue?"
}'

📦 列出可用模型

curl https://:3000/ollama/api/tags

🧠 生成嵌入

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

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

🧩 检索增强生成(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" https://:3000/api/v1/files/
  • Python 示例:

    import requests

    def upload_file(token, file_path):
    url = 'https://: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 https://: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'https://: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 https://: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 = 'https://: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 https://: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 = 'https://: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 社区联系我们或查阅常见问题。编程愉快!🌟