html 🚚 Ferramentas e funções de migração: 0,4 a 0,5 | Nullcore
Pule para o conteúdo principal

🚚 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:

  1. Os aplicativos foram transferidos para roteadores.

    • Anterior:open_webui.apps
    • Agora:open_webui.routers
  2. A estrutura principal do aplicativo simplificada.

    • O velhoopen_webui.apps.webuifoi transformado emopen_webui.main, tornando -o o ponto de entrada central para o projeto.
  3. Endpoint de API unificado

    • Nullcore 0.5 apresenta umfunção unificada, Assim,chat_completion, emopen_webui.main, substituindo funções separadas para modelos comoollamaeopenai. Isso oferece uma experiência de API consistente e simplificada. No entanto, osucessor diretoDestas funções individuais égenerate_chat_completiondeopen_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.

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!

  1. Assinaturas de função atualizadas.
    • As assinaturas de função agora aderem a um novo formato, exigindo umrequestobjeto.
    • OrequestObjeto pode ser obtido usando o__request__parâmetro na assinatura da função. Abaixo está um exemplo:
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 deappspararouters

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 antigoNovo caminho
open_webui.apps.ollamaopen_webui.routers.ollama
open_webui.apps.openaiopen_webui.routers.openai
open_webui.apps.audioopen_webui.routers.audio
open_webui.apps.retrievalopen_webui.routers.retrieval
open_webui.apps.webuiopen_webui.main

📜 Um exemplo importante

Para esclarecer o caso especial do aplicativo principal (webui), aqui está uma regra simples:

  • Estava dentrowebuiAgora está na raiz do projeto ouopen_webui.main
  • Por exemplo:
    • Antes (0,4):
      deopen_webuiaplicativoswebuimodelosimportarSomemodel
    • Depois (0,5):
      deopen_webuimodelosimportarSomemodel

Em geral,Apenas substituaopen_webui.appscomopen_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_completioneutils.chat.generate_chat_completion

Dependendo do seu caso de uso, você pode escolher entre:

  1. 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.
  2. 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 anteriormain.generate_chat_completions, Assim,ollama.generate_chat_completioneopenai.generate_chat_completionfunçõ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_completiondeopen_webui.utils.chat. Para o fluxo completo da API, use o novo unificadochat_completionfunção emopen_webui.main

Alterações de assinatura da função:

VelhoSucessor 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 anteriorollamaopenaiMé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 umRequestobjeto (__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 deopen_webui.appsopen_webui.routers
  • Endpoint unificado:Usaropen_webui.main.chat_completionpor simplicidade se ambosollamaeopenaiestão envolvidos.
  • Adaptar assinaturas de função:Verifique se suas funções passam as necessáriasrequestobjeto.

🎉 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! ✨