Saltar para o conteúdo principal
Versão: 2.0.0

Referência de API

Introdução

Cada nó Gaia é um servidor API compatível com OpenAI. Pode construir a sua aplicação com base na API do nó Gaia. Podes também pode substituir a configuração da API OpenAI pela API do nó Gaia noutros quadros de agentes de IA.

O URL de base para enviar todos os pedidos de API é https://node_id.gaianet.network/v1.

observação

Certifique-se de que substitui A SUA CHAVE_API VAI PARA AQUI com o seu chave API própria. Para obter a sua própria chave API, siga este tutorial.

Pontos finais

Conversa

O chat/complementos devolve uma resposta LLM baseada na solicitação do sistema e na consulta do utilizador.

Sem fluxo

Por defeito, a API responde com uma resposta completa na resposta HTTP.

Pedido

curl -X POST https://node_id.gaianet.network/v1/chat/completions \
-H 'accept:application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY_GOES_HERE' \
-d '{"messages":[{"role":"system", "content": "You are a helpful assistant."}, {"role":"user", "content": "What is the capital of France?"}], "model": "model_name"}'

Resposta:

{"id":"chatcmpl-bcfeebe0-5372-42c0-ac92-0615213e1c97","object":"chat.completion","created":1716380086,"model":"Llama-3-8B-Instruct-262k-Q5_K_M","choices":[{"index":0,"message":{"role":"assistant","content":"Paris."},"finish_reason":"stop"}],"usage":{"prompt_tokens":61,"completion_tokens":4,"total_tokens":65}}%  

transmissão

Adicionar "fluxo":verdadeiro no seu pedido para que a API envie respostas parciais à medida que o LLM gera a sua resposta.

Pedido:

curl -X POST https://node_id.gaianet.network/v1/chat/completions \
-H 'accept:application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY_GOES_HERE' \
-d '{"messages":[{"role":"system", "content": "You are a helpful assistant."}, {"role":"user", "content": "What is the capital of France?"}], "model": "model_name", "stream":true}'

Resposta:

data: {"id":"chatcmpl-73a1f57d-185e-42c2-b8a6-ba0bae58f3b4","choices":[{"index":0,"delta":{"role":"assistant","content":"I"},"logprobs":null,"finish_reason":null}],"created":1716381054,"model":"Llama-3-8B-Instruct-262k-Q5_K_M","system_fingerprint":"fp_44709d6fcb","object":"chat.completion.chunk"}

data: {"id":"chatcmpl-73a1f57d-185e-42c2-b8a6-ba0bae58f3b4","choices":[{"index":0,"delta":{"role":"assistant","content":" am"},"logprobs":null,"finish_reason":null}],"created":1716381054,"model":"Llama-3-8B-Instruct-262k-Q5_K_M","system_fingerprint":"fp_44709d6fcb","object":"chat.completion.chunk"}

data: {"id":"chatcmpl-73a1f57d-185e-42c2-b8a6-ba0bae58f3b4","choices":[{"index":0,"delta":{"role":"assistant","content":" a"},"logprobs":null,"finish_reason":null}],"created":1716381054,"model":"Llama-3-8B-Instruct-262k-Q5_K_M","system_fingerprint":"fp_44709d6fcb","object":"chat.completion.chunk"}

...

data: {"id":"chatcmpl-73a1f57d-185e-42c2-b8a6-ba0bae58f3b4","choices":[{"index":0,"delta":{"role":"assistant","content":" an"},"logprobs":null,"finish_reason":null}],"created":1716381055,"model":"Llama-3-8B-Instruct-262k-Q5_K_M","system_fingerprint":"fp_44709d6fcb","object":"chat.completion.chunk"}

data: {"id":"chatcmpl-73a1f57d-185e-42c2-b8a6-ba0bae58f3b4","choices":[{"index":0,"delta":{"role":"assistant","content":" AI"},"logprobs":null,"finish_reason":null}],"created":1716381055,"model":"Llama-3-8B-Instruct-262k-Q5_K_M","system_fingerprint":"fp_44709d6fcb","object":"chat.completion.chunk"}

data: {"id":"chatcmpl-73a1f57d-185e-42c2-b8a6-ba0bae58f3b4","choices":[{"index":0,"delta":{"role":"assistant","content":"."},"logprobs":null,"finish_reason":null}],"created":1716381055,"model":"Llama-3-8B-Instruct-262k-Q5_K_M","system_fingerprint":"fp_44709d6fcb","object":"chat.completion.chunk"}

data: [DONE]

Corpo do pedido

CampoTipoNecessárioDescriçãoPredefiniçãoExemplo
mensagensListaNecessárioUma lista de mensagens para a conversa.
1 . Mensagem do sistema (depende do modo de língua grande utilizado)
* conteúdo das mensagens do sistema é necessário
* "função": "sistema" é necessário
2. Mensagem do utilizador (obrigatório)
* conteúdo é necessário.
* "role": "user" (utilizador) é necessário
N/A"messages": ["role": "system","content": "You are a helpful assistant."},{"role": "user",
"content": "Hello!"}]
modeloCordasNecessárioO modelo de chat que utilizouN/ALlama-3-8B-262k-Q5_K_M
top_pNúmeroOpcionalUma alternativa à amostragem com temperatura. Valores mais altos, como 0,8, tornarão a saída mais aleatória, enquanto valores mais baixos, como 0,2, a tornarão mais focada e determinista.1Número entre 0 e 1.
temperaturaNúmeroOpcionalValores mais altos, como 0,8, tornarão a saída mais aleatória, enquanto valores mais baixos, como 0,2, a tornarão mais focada e determinista.1Número entre 0 e 2.
penalidade_de_presençaNúmeroOpcionalOs valores positivos penalizam os novos tokens com base no facto de aparecerem ou não no texto até ao momento, aumentando a probabilidade de o modelo falar sobre novos tópicos.0Número entre -2,0 e 2,0.
fluxobooleanoOpcionalFazer a saída de streaming da respostaFALSO"fluxo":verdadeiro
penalização_frequênciaNúmeroOpcionalOs valores positivos penalizam os novos tokens com base na sua frequência existente no texto até ao momento, diminuindo a probabilidade de o modelo repetir literalmente a mesma linha.0Número entre -2,0 e 2,0.

Corpo da resposta

CampoTipoEm fluxo contínuo ou nãoDescriçãoPredefiniçãoExemplo
idcordaAmbosUm identificador único para a conclusão da conversação.Gerado aleatoriamentechatcmpl-73a1f57d-185e-42c2-b8a6-ba0bae58f3b4
objetocordaAmbosO tipo de objetochat.completion.chunk no modo de fluxo contínuo.
chat.completion no modo sem fluxo contínuo.
chat.completion.chunk no modo de fluxo contínuo.
chat.completion no modo sem fluxo contínuo.
opçõesmatrizAmbosUma lista de opções de conclusão do chat."choices":[{"index":0,"message":{"role":"assistant","content":"Paris."},"finish_reason":"stop"}]
criadointeiroAmbosO carimbo de data/hora Unix (em segundos) de quando a conclusão da conversação foi criada.N/A1716380086
modelocordaAmbosO modelo utilizado para o preenchimento da conversação.Depende do modelo que utilizar.Llama-3-8B-Instruct-Q5_K_M
utilizaçãoobjetoAmbosEstatísticas de utilização do pedido de conclusão, incluindo completion_tokens, prompt_tokens e total_tokens.N/A"usage":{"prompt_tokens":61,"completion_tokens":4,"total_tokens":65}

Incorporação

O incrustações calcula os embeddings para consultas do utilizador ou pedaços de ficheiros.

Pedido

curl -X POST https://node_id.gaianet.network/v1/embeddings \
-H 'accept:application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY_GOES_HERE' \
-d '{"model": "nomic-embed-text-v1.5.f16", "input":["Paris, city and capital of France, ..., for Paris has retained its importance as a centre for education and intellectual pursuits.", "Paris’s site at a crossroads ..., drawing to itself much of the talent and vitality of the provinces."]}'

Resposta:

{
"object": "list",
"data": [
{
"index": 0,
"object": "embedding",
"embedding": [
0.1428378969,
-0.0447309874,
0.007660218049,
...
-0.0128974719,
-0.03543198109,
0.03974733502,
0.00946635101,
-0.01531364303
]
},
{
"index": 1,
"object": "embedding",
"embedding": [
0.0697753951,
-0.0001159032545,
0.02073983476,
...
0.03565846011,
-0.04550019652,
0.02691745944,
0.02498772368,
-0.003226313973
]
}
],
"model": "nomic-embed-text-v1.5.f16",
"usage": {
"prompt_tokens": 491,
"completion_tokens": 0,
"total_tokens": 491
}
}

Recuperar

O recuperar pode obter texto da coleção de vectores do nó com base na consulta do utilizador.

Pedido:

curl -X POST https://node_id.gaianet.network/v1/retrieve \
-H 'accept:application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY_GOES_HERE' \
-d '{"messages":[{"role":"system", "content": "You are a helpful assistant."}, {"role":"user", "content": "What is the location of Paris?"}], "model":"nomic-embed-text-v1.5.f16"}'

Resposta:

{
"points": [
{
"source": "\"Paris is located in northern central France, in a north-bending arc of the river Seine whose crest includes two islands, the Île Saint-Louis and the larger Île de la Cité, which form the oldest part of the city. The river's mouth on the English Channel is about 233 mi downstream from the city. The city is spread widely on both banks of the river. Overall, the city is relatively flat, and the lowest point is 35 m above sea level. Paris has several prominent hills, the highest of which is Montmartre at 130 m.\\n\"",
"score": 0.74011195
},
{
"source": "\"The Paris region is the most active water transport area in France, with most of the cargo handled by Ports of Paris in facilities located around Paris. The rivers Loire, Rhine, Rhône, Me\\n\"",
"score": 0.63990676
},
{
"source": "\"Paris\\nCountry\\tFrance\\nRegion\\nÎle-de-France\\r\\nDepartment\\nParis\\nIntercommunality\\nMétropole du Grand Paris\\nSubdivisions\\n20 arrondissements\\nGovernment\\n • Mayor (2020–2026)\\tAnne Hidalgo (PS)\\r\\nArea\\n1\\t105.4 km2 (40.7 sq mi)\\n • Urban\\n (2020)\\t2,853.5 km2 (1,101.7 sq mi)\\n • Metro\\n (2020)\\t18,940.7 km2 (7,313.0 sq mi)\\nPopulation\\n (2023)\\n2,102,650\\n • Rank\\t9th in Europe\\n1st in France\\r\\n • Density\\t20,000/km2 (52,000/sq mi)\\n • Urban\\n (2019)\\n10,858,852\\n • Urban density\\t3,800/km2 (9,900/sq mi)\\n • Metro\\n (Jan. 2017)\\n13,024,518\\n • Metro density\\t690/km2 (1,800/sq mi)\\nDemonym(s)\\nParisian(s) (en) Parisien(s) (masc.), Parisienne(s) (fem.) (fr), Parigot(s) (masc.), \\\"Parigote(s)\\\" (fem.) (fr, colloquial)\\nTime zone\\nUTC+01:00 (CET)\\r\\n • Summer (DST)\\nUTC+02:00 (CEST)\\r\\nINSEE/Postal code\\t75056 /75001-75020, 75116\\r\\nElevation\\t28–131 m (92–430 ft)\\n(avg. 78 m or 256 ft)\\nWebsite\\twww.paris.fr\\r\\n1 French Land Register data, which excludes lakes, ponds, glaciers > 1 km2 (0.386 sq mi or 247 acres) and river estuaries.\\n\"",
"score": 0.62259054
},
{
"source": "\" in Paris\\n\"",
"score": 0.6152092
},
{
"source": "\"The Parisii, a sub-tribe of the Celtic Senones, inhabited the Paris area from around the middle of the 3rd century BC. One of the area's major north–south trade routes crossed the Seine on the île de la Cité, which gradually became an important trading centre. The Parisii traded with many river towns (some as far away as the Iberian Peninsula) and minted their own coins.\\n\"",
"score": 0.5720232
}
],
"limit": 5,
"score_threshold": 0.4
}

Obter o modelo

O modelos fornece os modelos de chat e de incorporação disponíveis no nó.

Pedido:

curl -X POST https://node_id.gaianet.network/v1/models

Resposta:

{"object":"list","data":[{"id":"Llama-3-8B-Instruct-262k-Q5_K_M","created":1716383261,"object":"model","owned_by":"Not specified"},{"id":"nomic-embed-text-v1.5.f16","created":1716383261,"object":"model","owned_by":"Not specified"}]}%   

Obter a informação do nó

O informação fornece informações detalhadas sobre o nó.

Pedido:

curl -X POST https://node_id.gaianet.network/v1/info

Resposta:

{
"version": "0.5.0",
"plugin_version": "b2694 (commit 0d56246f)",
"port": "8080",
"models": [
{
"name": "Llama-2-7b-chat-hf-Q5_K_M",
"type": "chat",
"prompt_template": "Llama2Chat",
"n_predict": 1024,
"n_gpu_layers": 100,
"ctx_size": 4096,
"batch_size": 512,
"temperature": 1.0,
"top_p": 1.0,
"repeat_penalty": 1.1,
"presence_penalty": 0.0,
"frequency_penalty": 0.0
},
{
"name": "all-MiniLM-L6-v2-ggml-model-f16",
"type": "embedding",
"prompt_template": "Llama2Chat",
"n_predict": 1024,
"n_gpu_layers": 100,
"ctx_size": 384,
"batch_size": 512,
"temperature": 1.0,
"top_p": 1.0,
"repeat_penalty": 1.1,
"presence_penalty": 0.0,
"frequency_penalty": 0.0
}
],
"qdrant_config": {
"url": "http://localhost:6333",
"collection_name": "default",
"limit": 5,
"score_threshold": 0.4
}
}

Códigos de estado

Código de resposta HTTPDescriçãoMotivoSoluções
404Não encontradoO URL do ponto final é inválidoVerifique o URL do ponto final
500Erro interno do servidorO modelo não foi encontrado.Verificar o nome do modelo.
400Mau pedido