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
.
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
Campo | Tipo | Necessário | Descrição | Predefinição | Exemplo |
---|---|---|---|---|---|
mensagens | Lista | Necessário | Uma 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ário2. 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!"}] |
modelo | Cordas | Necessário | O modelo de chat que utilizou | N/A | Llama-3-8B-262k-Q5_K_M |
top_p | Número | Opcional | Uma 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. | 1 | Número entre 0 e 1. |
temperatura | Número | Opcional | 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. | 1 | Número entre 0 e 2. |
penalidade_de_presença | Número | Opcional | Os 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. | 0 | Número entre -2,0 e 2,0. |
fluxo | booleano | Opcional | Fazer a saída de streaming da resposta | FALSO | "fluxo":verdadeiro |
penalização_frequência | Número | Opcional | Os 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. | 0 | Número entre -2,0 e 2,0. |
Corpo da resposta
Campo | Tipo | Em fluxo contínuo ou não | Descrição | Predefinição | Exemplo |
---|---|---|---|---|---|
id | corda | Ambos | Um identificador único para a conclusão da conversação. | Gerado aleatoriamente | chatcmpl-73a1f57d-185e-42c2-b8a6-ba0bae58f3b4 |
objeto | corda | Ambos | O tipo de objeto | chat.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ções | matriz | Ambos | Uma lista de opções de conclusão do chat. | "choices":[{"index":0,"message":{"role":"assistant","content":"Paris."},"finish_reason":"stop"}] | |
criado | inteiro | Ambos | O carimbo de data/hora Unix (em segundos) de quando a conclusão da conversação foi criada. | N/A | 1716380086 |
modelo | corda | Ambos | O modelo utilizado para o preenchimento da conversação. | Depende do modelo que utilizar. | Llama-3-8B-Instruct-Q5_K_M |
utilização | objeto | Ambos | Estatí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 HTTP | Descrição | Motivo | Soluções |
---|---|---|---|
404 | Não encontrado | O URL do ponto final é inválido | Verifique o URL do ponto final |
500 | Erro interno do servidor | O modelo não foi encontrado. | Verificar o nome do modelo. |
400 | Mau pedido |