🚚 Guia de migração: Abrir Webui 0,4 a 0,5
Bem -vindo ao Nullcore 0.5 Migration Guide! Se você estiver trabalhando em projetos existentes ou na construção de novos, este guia o levará através das principais mudanças deVersão 0.4 a 0,5e forneça um roteiro fácil de seguir para atualizar suas funções. Vamos tornar essa transição o mais suave possível! 😊
🧐 O que mudou e por quê?
Com o Nullcore 0.5, revisamos a arquitetura para fazer o projetoMais simples, mais unificado e escalável. Aqui está o quadro geral:
- Arquitetura antiga:🎯 Anteriormente, o Nullcore foi construído em umArquitetura de sub-aplicativoonde cada aplicativo (por exemplo,,
ollama
, Assim,openai
) foi um aplicativo FASTAPI separado. Isso causou fragmentação e complexidade extra ao gerenciar aplicativos. - Nova arquitetura:🚀 Com a versão 0.5, fizemos a transição para umApp FASTAPI únicocom múltiploroteadores. Isso significa melhor organização, fluxo centralizado e redundância reduzida.
Mudanças principais:
Aqui está uma visão geral do que mudou:
-
Os aplicativos foram transferidos para roteadores.
- Anterior:
open_webui.apps
- Agora:
open_webui.routers
- Anterior:
-
A estrutura principal do aplicativo simplificada.
- O velho
open_webui.apps.webui
foi transformado emopen_webui.main
, tornando -o o ponto de entrada central para o projeto.
- O velho
-
Endpoint de API unificado
- Nullcore 0.5 apresenta umfunção unificada, Assim,
chat_completion
, emopen_webui.main
, substituindo funções separadas para modelos comoollama
eopenai
. Isso oferece uma experiência de API consistente e simplificada. No entanto, osucessor diretoDestas funções individuais égenerate_chat_completion
deopen_webui.utils.chat
. Se você preferir uma solicitação de postagem leve sem lidar com a análise adicional (por exemplo, arquivos, ferramentas ou misc), essa função de utilidade é provavelmente o que você deseja.
- Nullcore 0.5 apresenta umfunção unificada, Assim,
Exemplo:
# Fluxo completo da API com análise (nova função):
deopen_webuiprincipalimportarChat_completion
# Lightweight, Direct Post Solicy (SUCESTOR DIRETO):
deopen_webuiUTILSbater papoimportargenerate_chat_completion
Escolha a abordagem que melhor se encaixa no seu caso de uso!
- Assinaturas de função atualizadas.
- As assinaturas de função agora aderem a um novo formato, exigindo um
request
objeto. - O
request
Objeto pode ser obtido usando o__request__
parâmetro na assinatura da função. Abaixo está um exemplo:
- As assinaturas de função agora aderem a um novo formato, exigindo um
aula Cano
def __init__auto
passar
assíncrono def cano
auto, Assim,
corpo dito, Assim,
__usuário__ dito, Assim,
__solicitar__Solicitar, Assim, # Novo parâmetro
str
# Escreva sua função aqui
Por que fizemos essas mudanças?
- Para simplificar a base de código, facilitando a extensão e a manutenção.
- Unificar APIs para uma experiência mais simplificada do desenvolvedor.
- Para melhorar o desempenho consolidando elementos redundantes.
✅ Guia de migração passo a passo
Siga este guia para atualizar sem problemas seu projeto.
🔄 1. Mudando deapps
pararouters
Todos os aplicativos foram renomeados e realocados emopen_webui.routers
. Isso afeta as importações em sua base de código.
Mudanças rápidas para caminhos de importação:
Caminho antigo | Novo caminho |
---|---|
open_webui.apps.ollama | open_webui.routers.ollama |
open_webui.apps.openai | open_webui.routers.openai |
open_webui.apps.audio | open_webui.routers.audio |
open_webui.apps.retrieval | open_webui.routers.retrieval |
open_webui.apps.webui | open_webui.main |
📜 Um exemplo importante
Para esclarecer o caso especial do aplicativo principal (webui
), aqui está uma regra simples:
- Estava dentro
webui
Agora está na raiz do projeto ouopen_webui.main
- Por exemplo:
- Antes (0,4):
deopen_webuiaplicativoswebuimodelosimportarSomemodel
- Depois (0,5):
deopen_webuimodelosimportarSomemodel
- Antes (0,4):
Em geral,Apenas substituaopen_webui.apps
comopen_webui.routers
- exceto parawebui
, que agora éopen_webui.main
👩💻 2. Atualizando declarações de importação
Vamos ver como é essa atualização em seu código:
Antes:
deopen_webuiaplicativosOllamaimportarprincipalcomoOllama
deopen_webuiaplicativosOpenaiimportarprincipalcomoOpenai
Depois:
# Importações de roteador separadas
deopen_webuiroteadoresOllamaimportargenerate_chat_completion
deopen_webuiroteadoresOpenaiimportargenerate_chat_completion
# Ou use o terminal unificado
deopen_webuiprincipalimportarChat_completion
💡 Dica profissional:Priorize o endpoint unificado (chat_completion
) por simplicidade e compatibilidade futura.
Nota adicional: Escolha entremain.chat_completion
eutils.chat.generate_chat_completion
Dependendo do seu caso de uso, você pode escolher entre:
-
open_webui.main.chat_completion
- Simula fazer uma solicitação de postagem para
/api/chat/completions
- Processa arquivos, ferramentas e outras tarefas diversas.
- Melhor quando você deseja que o fluxo de API completo tratado automaticamente.
- Simula fazer uma solicitação de postagem para
-
open_webui.utils.chat.generate_chat_completion
- Faz diretamente uma solicitação de postagem sem lidar com a análise ou tarefas extras.
- Este é osucessor diretopara o anterior
main.generate_chat_completions
, Assim,ollama.generate_chat_completion
eopenai.generate_chat_completion
funções no webui aberto 0.4. - Melhor para cenários simplificados e mais leves.
Exemplo:
# Use isso para o fluxo completo da API com a análise:
deopen_webuiprincipalimportarChat_completion
# Use isso para uma solicitação de postagem direta e despojada:
deopen_webuiUTILSbater papoimportargenerate_chat_completion
📋 3. Adaptando -se às assinaturas de função atualizadas
Atualizamos oassinaturas de funçãoPara se encaixar melhor na nova arquitetura. Se você está procurando uma substituição direta, comece com a função de utilidade levegenerate_chat_completion
deopen_webui.utils.chat
. Para o fluxo completo da API, use o novo unificadochat_completion
função emopen_webui.main
Alterações de assinatura da função:
Velho | Sucessor direto (novo) | Opção unificada (novo) |
---|---|---|
openai.generate_chat_completion(form_data: dict, user: UserModel) | generate_chat_completion(request: Request, form_data: dict, user: UserModel) | chat_completion(request: Request, form_data: dict, user: UserModel) |
- Sucessor direto (
generate_chat_completion
: Um substituto leve, 1: 1 para anteriorollama
openai
Métodos. - Opção unificada (
chat_completion
: Use isso para o fluxo completo da API, incluindo análise de arquivos e funcionalidade adicional.
Exemplo:
Se você está usandochat_completion
, eis como sua função deve parecer agora:
🛠️ Como refatorar sua função personalizada
Vamos reescrever uma função de amostra para corresponder à nova estrutura:
Antes (0,4):
dePydanticimportarBasemodel
deopen_webuiaplicativosOllamaimportargenerate_chat_completion
aula UsuárioBasemodel
eu ia str
e-mail str
nome str
papel str
aula Cano
def __init__auto
passar
assíncrono def canoauto, Assim,corpo dito, Assim,__usuário__ dito str
# Chama o Open Endpoint
usuárioUsuário__usuário__
corpo[["modelo" "LLAMA3.2: mais recente"
retornar aguardeOllamagenerate_chat_completioncorpo, Assim,usuário
Depois (0,5):
dePydanticimportarBasemodel
deFASTAPIimportarSolicitar
deopen_webuiUTILSbater papoimportargenerate_chat_completion
aula UsuárioBasemodel
eu ia str
e-mail str
nome str
papel str
aula Cano
def __init__auto
passar
assíncrono def cano
auto, Assim,
corpo dito, Assim,
__usuário__ dito, Assim,
__solicitar__Solicitar, Assim,
str
# Usa o endpoint unificado com assinatura atualizada
usuárioUsuário__usuário__
corpo[["modelo" "LLAMA3.2: mais recente"
retornar aguardegenerate_chat_completion__solicitar__, Assim,corpo, Assim,usuário
Notas importantes:
- Você deve passar um
Request
objeto (__request__
) na nova assinatura da função. - Outros parâmetros opcionais (como
__user__
e__event_emitter__
) Garanta flexibilidade para casos de uso mais complexos.
🌟 4. Recapitulação: conceitos -chave em termos simples
Aqui está uma folha de dicas rápida para lembrar:
- Aplicativos para roteadores:Atualizar todas as importações de
open_webui.apps
open_webui.routers
- Endpoint unificado:Usar
open_webui.main.chat_completion
por simplicidade se ambosollama
eopenai
estão envolvidos. - Adaptar assinaturas de função:Verifique se suas funções passam as necessárias
request
objeto.
🎉 Hooray! Você está pronto!
É isso! Você migrou com sucesso deNullcore 0,4 a 0,5. Ao refatorar suas importações, usando o terminal unificado e atualizar as assinaturas de funções, você estará totalmente equipado para aproveitar os recursos e melhorias mais recentes na versão 0.5.
Perguntas ou feedback?Se você tiver algum problema ou ter sugestões, sinta -se à vontade para abrir umProblema do GitHubOu pergunte nos fóruns da comunidade!
Codificação feliz! ✨