A menor API LLM possível. Crie uma interface de perguntas e respostas para seu próprio conteúdo em poucos minutos. Usa embeddings OpenAI, gpt-3.5 e Faiss, via Langchain.
source.json
. Deveria ficar assim: [
{
"source" : " Reference to the source of your content. Typically a title. " ,
"url" : " URL for your source. This key is optional. " ,
"content" : " Your content as a single string. If there's a title or summary, put these first, separated by new lines. "
},
...
]
Veja example.source.json
para ver um exemplo.
pip install microllama
Obtenha uma chave de API OpenAI e adicione-a ao ambiente, por exemplo, export OPENAI_API_KEY=sk-etc
. Observe que a indexação e a consulta exigem créditos OpenAI, que não são gratuitos.
Execute seu servidor com microllama
. Se um índice de pesquisa vetorial não existir, ele será criado a partir do seu source.json
e armazenado.
Consulte seus documentos em /api/ask?sua pergunta.
Microllama inclui um front-end web opcional, que é gerado com microllama make-front-end
. Este comando cria um único arquivo index.html
que você pode editar. É servido em /.
O Microllama é configurado através de variáveis de ambiente, com os seguintes padrões:
OPENAI_API_KEY
: obrigatórioFAISS_INDEX_PATH
: "faiss_index"SOURCE_JSON
: "fonte.json"MAX_RELATED_DOCUMENTS
: "5"EXTRA_CONTEXT
: "Responda em no máximo três frases. Se a resposta não estiver incluída no contexto, diga 'Desculpe, isso não é resposta para isso em minhas fontes.'."UVICORN_HOST
: "0.0.0.0"UVICORN_PORT
: "8080" Crie um Dockerfile com microllama make-dockerfile
. Então:
Cadastre-se para uma conta Fly.io e instale o flyctl. Então:
fly launch # answer no to Postgres, Redis and deploying now
fly secrets set OPENAI_API_KEY=sk-etc
fly deploy
gcloud run deploy --source . --set-env-vars= " OPENAI_API_KEY=sk-etc "
Para Cloud Run e outras plataformas sem servidor, você deve gerar o índice FAISS no momento da criação do contêiner, para reduzir o tempo de inicialização. Veja as duas linhas comentadas no Dockerfile
.
Você também pode gerar esses comandos com microllama deploy
.
SpacyTextSplitter(chunk_size=700, chunk_overlap=200, separator=" ")