html Externo | Nullcore
Pule para o conteúdo principal

Externo

aviso

Este tutorial é uma contribuição da comunidade e não é suportado pela equipe Nullcore. Serve apenas como uma demonstração sobre como personalizar o Nullcore para o seu caso de uso específico. Quer contribuir? Confira o tutorial contribuinte.

API de pesquisa na web externa

Esta opção permite conectar o WebUI aberto ao seu próprio ponto de extremidade da API de pesquisa da Web auto-hospedada. Isso é útil se você quiser:

  • Integre um mecanismo de pesquisa não suportado nativamente pelo Nullcore.
  • Implementar a lógica de pesquisa personalizada, filtragem ou processamento de resultados.
  • Use um índice de pesquisa privado ou interno.

Configuração do Webui aberto

  1. Navegue até o webui abertoAdmin Panel
  2. Vá para oSettingsguia e depois selecioneWeb Search
  3. AlternarEnable Web Searchpara a posição on.
  4. DefinirWeb Search EngineDo menu suspenso paraexternal
  5. PreencherExternal Search URLCom o URL completo do seu endpoint de API de pesquisa personalizado (por exemplo,,http://localhost:8000/searchouhttps://my-search-api.example.com/api/search
  6. PreencherExternal Search API Keycom a chave da API secreta necessária para se autenticar com seu terminal de pesquisa personalizado. Deixe em branco se o seu terminal não exigir autenticação (não recomendado para pontos de extremidade públicos).
  7. CliqueSave

Nullcore Admin panel showing External Search config

Especificação da API

Nullcore irá interagir com o seuExternal Search URLdo seguinte modo:

  • Método: POST

  • Cabeçalhos:

    • Content-Type: application/json
    • Authorization: Bearer <YOUR_EXTERNAL_SEARCH_API_KEY>
  • Solicitar corpo (JSON):

    {
    "consulta" "A sequência de consulta de pesquisa do usuário", Assim,
    "contar" 5 // o número máximo de resultados de pesquisa solicitados

    • query(String): o termo de pesquisa inserido pelo usuário.
    • count(Inteiro): O número máximo sugerido de resultados abertos Webui espera. Sua API pode retornar menos resultados, se necessário.
  • Corpo de resposta esperado (JSON):Seu endpoint da APIdeveRetorne uma matriz JSON de objetos de resultado da pesquisa. Cada objeto deve ter a seguinte estrutura:

    [[
    {
    "link" "URL do resultado da pesquisa", Assim,
    "título" "Título da página de resultado da pesquisa", Assim,
    "Snippet" "Uma breve descrição ou trecho da página de resultado da pesquisa"
    , Assim,
    {
    "link" , Assim,
    "título" , Assim,
    "Snippet"

    // ... potencialmente mais resultados até a contagem solicitada

    • link(String): o URL direto para o resultado da pesquisa.
    • title(String): O título da página da web.
    • snippet(String): Um trecho de texto descritivo do conteúdo da página relevante para a consulta.

    Se ocorrer um erro ou nenhum resultado for encontrado, seu endpoint deve retornar idealmente uma matriz JSON vazia[]

Exemplo de implementação (Python/FASTAPI)

Aqui está um exemplo simples de uma API de pesquisa auto-hospedada usando Python com FASTAPI e oduckduckgo-searchbiblioteca.

importarUvicorn
deFASTAPIimportarFASTAPI, Assim,Cabeçalho, Assim,Corpo, Assim,HttPexception
dePydanticimportarBasemodel
deDuckduckgo_searchimportarDDGS

Esperado_bearer_token "Your_Secret_Token_Hhere"

AppFASTAPI


aula SearchRequestBasemodel
consulta str
contar int


aula SearchResultBasemodel
link str
título str Nenhum
trecho str Nenhum


@Apppublicar"/procurar"
assíncrono def External_search
Search_RequestSearchRequestCorpo, Assim,
autorização str Nenhum CabeçalhoNenhum, Assim,

esperado_auth_header f "Portador{Esperado_bearer_token
seautorização! =esperado_auth_header
elevaçãoHttPexceptionstatus_code401, Assim,detalhe"Não autorizado"

consulta, Assim,contarSearch_Requestconsulta, Assim,Search_Requestcontar

Resultados [[
tentar
comDDGS comoDDGS
Search_ResultsDDGStexto
consulta, Assim,SafeSearch"moderado", Assim,max_resultscontar, Assim,back -end"Lite"


Resultados [[
SearchResult
linkresultado[["Href", Assim,
títuloresultadopegar"título", Assim,
trechoresultadopegar"corpo", Assim,

pararesultadoemSearch_Results


excetoExceçãocomoe
imprimirF "Erro durante a pesquisa de Duckduckgo:{e

retornarResultados


se__nome__ "__principal__"
Uvicorncorrer"Main: App", Assim,hospedar"0.0.0.0", Assim,porta8888