Criar, atualizar, e apagar KS via API
Os exemplos nesta seção usam curl e shell scripts. Você pode alterá-los. Use a StackSpot AI para adaptá-los para o idioma que desejar.
Pré-Requisitos
-
Devido às restrições de autenticação, o envio diretamente via API está disponível apenas para contas Enterprise.
-
Autentique-se para usar o script.
Siga os passos para autenticar na página de Credenciais de Serviço, para mais detalhes, acesse a documentação da StackSpot EDPn.
Ative as seguintes permissões:
- ai_dev and ai_admin.
Entre em contato com o administrador da sua conta se não conseguir criar uma Credencial de Serviço.
- Copie os campos 'client id', 'client key', e 'realm' para usar como variáveis de ambiente (os dois primeiros devem ser segredos) ou no exemplo curl a parte inferior da página na seção 'como usar'. Você não poderá vê-los novamente.
Se você perder alguma delas, revogue a credencial e crie uma nova.
- Os exemplos a seguir consideram que o token de acesso está definido como a variável de ambiente
JWT
. Você pode extrair isso da autenticaçãocurl
com o comandojq
para obter o valor para a chaveaccess_token
do JSON retornado, depois salvá-lo como uma variável de ambiente usando o comandoexport
, como:
export JWT=$(curl -s "https://idm.stackspot.com/$REALM/oidc/oauth/token" -H 'Content-Type: application/x-www-form-urlencoded' -d 'grant_type=client_credentials' -d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_KEY" | jq -r '.access_token')
Criar um Knowledge Source via API
Siga os passos:
Passo 1. Execute o comando para criar o KS:
curl -s -X POST "https://genai-code-buddy-api.stackspot.com/v1/knowledge-sources" -H "Authorization: Bearer $JWT" -H 'Content-Type: application/json' -d '{"slug": "<KS identifier in API>", "name": "<display name>", "description": "<more details about KS>", "type": "<one of API, SNIPPET or CUSTOM>"}'
Passo 2. Acesse o Portal da StackSpot AI.
- Acesse a seção ‘Knowledge Sources’ no menu principal e procure pelo que você acabou de criar.
Fazer Upload de arquivos para um Knowledge Source existente
Ao adicionar novos arquivos a um Knowledge Source, o limite é de 10 MiB.
Quando você faz upload de arquivos para um Knowledge Source, a extensão do arquivo no campo file_name
é essencial. A StackSpot AI depende da extensão do arquivo para identificar a sintaxe do conteúdo, garantindo que o arquivo enviado seja processado e categorizado corretamente.
Por que a extensão do arquivo é importante
A extensão do arquivo permite que a StackSpot AI:
- Identifique automaticamente a sintaxe do conteúdo do arquivo;
- Aplique as regras de análise corretas para um processamento preciso;
- Torne o conteúdo fácil para pesquisar e utilizável dentro do Knowledge Source.
Exemplo
Se você fazer o upload de um arquivo chamado example.json
, a StackSpot AI processará como um arquivo JSON. Se a extensão estiver ausente ou incorreta, o sistema pode não interpretar o conteúdo corretamente.
Você pode fazer o upload de um ou mais arquivos para uma Knowledge Source existente. Também é possível escolher fazer o upload de um arquivo zip. Siga os passos para realizar isso.
Você precisa ter criado previamente um Knowledge Source aqui. Se ainda não criou, crie um agora.
Passo 1. Execute o seguinte script para iniciar o processo de upload:
upload_data=$(curl -X POST 'https://genai-code-buddy-api.stackspot.com/v1/file-upload/form' \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $JWT" \
-d '{"file_name": "<desired file's name with extension>", "target_id": "<KS slug>", "target_type": "KNOWLEDGE_SOURCE", "expiration": 600 }')
echo -n 'file upload id = '
echo "$upload_data" | jq -r '.id'
curl -X POST "$(echo "$upload_data" | jq -r '.url')" \
-F "key=$(echo "$upload_data" | jq -r '.form.key')" \
-F "x-amz-algorithm=$(echo "$upload_data" | jq -r '.form["x-amz-algorithm"]')" \
-F "x-amz-credential=$(echo "$upload_data" | jq -r '.form["x-amz-credential"]')" \
-F "x-amz-date=$(echo "$upload_data" | jq -r '.form["x-amz-date"]')" \
-F "x-amz-security-token=$(echo "$upload_data" | jq -r '.form["x-amz-security-token"]')" \
-F "policy=$(echo "$upload_data" | jq -r '.form.policy')" \
-F "x-amz-signature=$(echo "$upload_data" | jq -r '.form["x-amz-signature"]')" \
-F "file=@'<absolute path to desired file>'"
Passo 2. Para verificar o status do upload, execute o comando:
curl --location 'https://genai-code-buddy-api.stackspot.com/v1/file-upload/@<file upload id>' \
--header 'Authorization: Bearer $JWT'
Passo 3. Acesse o portal da StackSpot AI
Passo 4. No menu principal, clique em ‘Knowledge Sources’ e depois verifique se o seu Knowledge Source possui novos objetos.
Fazer upload de conteúdo standalone para um Knowledge Source existente
Você precisa ter criado previamente um Knowledge Source aqui. Se ainda não criou, crie um neste momento.
Apenas os tipos de KS mencionados suportam esse upload.
Snippet
curl -L 'https://genai-code-buddy-api.stackspot.com/v1/knowledge-sources/<KS slug>/snippets' \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $JWT" \
-d '{
"use_case": "<description>",
"code": "<content>",
"language": "<one of sql, csp, freemarker2, systemverilog, sb, scheme, groovy, postiats, sol, mips, twig, php, aes, coffeescript, json, ocaml, sparql, xml, powershell, haskell, rust, scala, plaintext, octave, abap, lua, shell, less, r, yaml, fortran, bat, cobol, hcl, msdax, graphql, qsharp, objective-c, bicep, st, cpp, css, redis, javascript, julia, apex, dart, pug, markdown, flow9, sbcl, pascal, kotlin, c, csharp, pascaligo, scss, go, swift, proto, typescript, liquid, m3, razor, html, lexon, java, azcli, tcl, fsharp, ruby, vb, python, cameligo, ini, clojure, ada, elixir, restructuredtext, dockerfile, handlebars, racket, ecl, pla, perl, erlang, powerquery, verilog, d>"
}'
Personalizado
curl -L 'https://genai-code-buddy-api.stackspot.com/v1/knowledge-sources/<KS slug>/custom' \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $JWT" \
-d '{"content": "<content>"}'
Apagar Knowledge Sources Objects
Todos os Arquivos
Se você deseja apagar todos os Knowledge Source Objects, execute no seu terminal:
curl -s -X DELETE "https://genai-code-buddy-api.stackspot.com/v1/knowledge-sources/<KS slug>/objects" -H "Authorization: Bearer $JWT"
Standalone
Se você deseja excluir apenas o arquivo independente que você adicionou manualmente:
curl -s -X DELETE "https://genai-code-buddy-api.stackspot.com/v1/knowledge-sources/<KS slug>/objects?standalone=true" -H "Authorization: Bearer $JWT"
Apenas uploads
Para excluir os arquivos zip, execute o seguinte:
curl -s -X DELETE "https://genai-code-buddy-api.stackspot.com/v1/knowledge-sources/<KS slug>/objects?standalone=false" -H "Authorization: Bearer $JWT"