Pular para o conteúdo principal

🔗 Endpoints da API

Este guia fornece informações essenciais sobre como interagir com os endpoints da API de forma eficaz para alcançar integração e automação perfeitas usando nossos modelos. Observe que esta é uma configuração experimental e pode sofrer atualizações futuras para melhorias.

Autenticação​

Para garantir acesso seguro à API, é necessária autenticação 🛡️. Você pode autenticar suas solicitações de API usando o mecanismo Bearer Token. Obtenha sua chave de API em Configurações > Conta na Open WebUI ou, alternativamente, use um JWT (JSON Web Token) para autenticação.

Endpoints Notáveis da API​

📜 Recuperar Todos os Modelos​

  • Endpoint: GET /api/models

  • Descrição: Busca todos os modelos criados ou adicionados via Open WebUI.

  • Exemplo:

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

💬 Completações de Chat​

  • Endpoint: POST /api/chat/completions

  • Descrição: Serve como um endpoint de completas de chat compatível com a API OpenAI para modelos no Open WebUI, incluindo modelos Ollama, modelos OpenAI e modelos de Função do Open WebUI.

  • Exemplo com 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": "Por que o céu é azul?"
    }
    ]
    }
  • Exemplo em Python:

    import requests

    def chat_with_model(token):
    url = http://localhost:3000/api/chat/completions
    headers = {
    Authorization: fBearer {token},
    Content-Type: application/json
    }
    data = {
    "model": "granite3.1-dense:8b",
    "messages": [
    {
    "role": "user",
    "content": "Por que o céu é azul?"
    }
    ]
    }
    response = requests.post(url, headers=headers, json=data)
    return response.json()

🦙 Suporte ao Proxy da API Ollama​

Se você deseja interagir diretamente com os modelos Ollama — incluindo geração de embeddings ou streaming bruto de prompts — o Open WebUI oferece uma passagem transparente para a API Ollama nativa via rota proxy.

🔁 Gerar Completações (Streaming)​

curl http://localhost:3000/ollama/api/generate -d {
"model": "llama3.2",
"prompt": "Por que o céu é azul?"
}

📦 Listar Modelos Disponíveis​

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

🧠 Gerar Embeddings​

curl -X POST http://localhost:3000/ollama/api/embed -d {
"model": "llama3.2",
"input": ["Open WebUI é incrível!", "Vamos gerar embeddings."]
}

Isso é ideal para construir índices de pesquisa, sistemas de recuperação ou pipelines personalizados usando modelos Ollama integrados ao Open WebUI.

🧩 Geração Aumentada por Recuperação (RAG)​

O recurso de Geração Aumentada por Recuperação (RAG) permite aprimorar as respostas incorporando dados de fontes externas. Abaixo, você encontrará os métodos para gerenciar arquivos e coleções de conhecimento via a API, e como usá-los em completas de chat de forma eficaz.

Envio de Arquivos​

Para utilizar dados externos em respostas RAG, você precisa primeiro enviar os arquivos. O conteúdo do arquivo enviado é automaticamente extraído e armazenado em um banco de dados vetorial.

  • Endpoint: POST /api/v1/files/

  • Exemplo com 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/
  • Exemplo em Python:

    import requests

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

Adicionar Arquivos às Coleções de Conhecimento​

Após o upload, você pode agrupar arquivos em uma coleção de conhecimento ou referenciá-los individualmente em chats.

  • Endpoint: POST /api/v1/knowledge/{id}/file/add

  • Exemplo com 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"}
  • Exemplo em Python:

    import requests

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

Usando Arquivos e Coleções em Conclusões de Conversa​

Você pode referenciar tanto arquivos individuais quanto coleções inteiras em suas consultas RAG para respostas enriquecidas.

Usando um Arquivo Individual em Conclusões de Conversa​

Este método é benéfico quando você deseja focar a resposta do modelo de chat no conteúdo de um arquivo específico.

  • Endpoint: POST /api/chat/completions

  • Exemplo 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": "Explique os conceitos neste documento."}
    ],
    "files": [
    {"type": "file", "id": "your-file-id-here"}
    ]
    }
  • Exemplo Python:

    import requests

    def chat_with_file(token, model, query, file_id):
    url = http://localhost:3000/api/chat/completions
    headers = {
    Authorization: fBearer {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()
Usando uma Coleção de Conhecimento em Conclusões de Conversa​

Aproveite uma coleção de conhecimento para melhorar a resposta quando a consulta pode se beneficiar de um contexto mais amplo ou de vários documentos.

  • Endpoint: POST /api/chat/completions

  • Exemplo 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": "Forneça insights sobre as perspectivas históricas abordadas na coleção."}
    ],
    "files": [
    {"type": "collection", "id": "your-collection-id-here"}
    ]
    }
  • Exemplo Python:

    import requests

    def chat_with_collection(token, model, query, collection_id):
    url = http://localhost:3000/api/chat/completions
    headers = {
    Authorization: fBearer {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()

Esses métodos permitem uma utilização eficaz de conhecimento externo via arquivos enviados e coleções de conhecimento organizadas, melhorando as capacidades das aplicações de chat utilizando a API Open WebUI. Esteja usando arquivos individualmente ou dentro de coleções, você pode personalizar a integração com base em suas necessidades específicas.

Vantagens de Usar o Open WebUI como um Provedor LLM Unificado​

O Open WebUI oferece uma variedade de benefícios, tornando-se uma ferramenta essencial para desenvolvedores e empresas:

  • Interface Unificada: Simplifique suas interações com diferentes LLMs por meio de uma única plataforma integrada.
  • Facilidade de Implementação: Início rápido de integração com documentação abrangente e suporte da comunidade.
important

Certifique-se de definir a variável de ambiente ENV como dev para acessar a documentação Swagger de qualquer um desses serviços. Sem essa configuração, a documentação não estará disponível.

Acesse uma documentação detalhada da API para diferentes serviços fornecidos pelo Open WebUI:

AplicaçãoCaminho da Documentação
Principal/docs

Seguindo estas diretrizes, você pode integrar rapidamente e começar a utilizar a API Open WebUI. Caso encontre algum problema ou tenha questões, sinta-se à vontade para entrar em contato através da nossa Comunidade Discord ou consultar as FAQs. Feliz codificação! 🌟