O que é Knowledge Source
O que são Knowledge Sources?
Os Knowledge Sources são um recurso essencial da StackSpot AI que permite a criação pedaços (chunks) de informação contextualizado e personalizado, é uma base de conhecimento. Eles fornecem informações adicionais, como trechos de código, APIs e documentação, por exemplo, que a StackSpot AI utiliza para gerar respostas mais precisas e relevantes. Ao criar e adicionar os Knowledge Sources nos seus Agentes, Quick Commands, etc, você melhora a capacidade da StackSpot AI de atuar como um assistente de desenvolvimento, tornando-a mais eficiente e adaptada às suas necessidades.
Como Knowledge Sources funcionam?
Quando você cria um Knowledge Source e o adiciona a um Agente ou Quick Command, você está alimentando o contexto da plataforma. A AI está sendo enriquecida com informações que você insere. A StackSpot AI utiliza essas informações para buscar semelhanças no banco de dados e, assim, oferecer sugestões de código mais adequadas e contextualizadas.
Tipos de Knowledge Source (KS)
- 1. Snippets Group (Grupo de Trechos de Código)
Ao incorporar seus trechos de código na StackSpot AI, você contribui para a geração de código que reflete experiências e cenários do mundo real. Esses snippets enriquecem o processo de aprendizado do modelo de linguagem, permitindo que a StackSpot AI ofereça sugestões de código mais contextualizadas e personalizadas. Os benefícios incluem a geração de código a partir de cenários reais, a flexibilidade para criar trechos personalizados e a melhoria na qualidade das sugestões de código.
Exemplo de um KS de trecho de código: arquivo YAML, um Plugin de Infraestrutura:
exemplo de trecho de códigoschema-version: v3 #required
kind: plugin #required
metadata:
name: ecs-service #required
description: Plugin to create an ECS server #required
display-name: Esc Service #optional
version: 1.0.0 #required
spec:
type: app/infra #required #accepted values: app or infra
compatibility: #optional
- python
docs: #optional
pt-br: docs/pt-br/docs.md
en-us: docs/en-us/docs.md
runtime: #required if the plugin is type: infra
environment: # required for infra Plugins
- terraform-1-4
- aws-cli-2-2
single-use: false #optional #accepted values: true or false
justification: "Justification text" # required
requires: #optional
actions:
- my-studio-slug/my-action-or-plugin-slug
plugins:
- my-studio/single-use-app-plugin
- my-studio/terraform-aws-elasticache-redis
- my-studio/sqs-create-plugin
- studio/plugin
generates: #it only exists if the plugin is type: infra
connections:
- type: aws-iam-role-conn
alias: rds-access-iam-role
outputs:
- from: rds-access-iam-role-arn
to: arn
- type: aws-iam-role-conn
alias: sqs-access-iam-role
outputs:
- from: sqs-access-iam-role-arn
to: arn
links: #optional
- name: Link name
url: Link URL
type: static #static type
picture: icon.png
- name: Link name
url: https://{{connections.rds.host}}.com.br/ #dynamic links use JINJA expressions
type: dynamic #dynamic type
picture: docs/grafana.png
stk-projects-only: true #required #accepted values: true or false
app-allowed: false #it only exists if the plugin is type: infra #accepted values: true or false
inputs: #optional
inputs: #optional
- label: Select the connection for your ecs-task-creator-placeholder
type: required-connection
name: ecs-task-creator-placeholder
connection-interface-type: ecs-task-conn
- label: Select the connection for your ec2-alb-creator-placeholder
type: required-connection
name: ec2-alb-creator-placeholder
connection-interface-type: ec2-alb-conn
- label: Select the connection for your ec2-alb-creator-placeholder2
type: required-connection
name: ec2-alb-creator-placeholder2
connection-interface-type: ec2-alb-conn
- label: Input label
name: Input name
type: text
required: true
default: Input default value
pattern: '([A-Z][a-z]+)+'
help: 'Insert any text'
- 2. Personalizado
Você pode fazer enviar os arquivos ou adicionar o que deseja manualmente dentro do seu Knowledge Source, como guias, documentos. Esses serão os seus Knowledge Objects, que são os pedaços de informação. A StackSpot AI suporta os seguintes arquivos:
.json
.yml
.yaml
.md
.txt
.pdf
zip.
(O arquivo.zip
deve conter os tipos de arquivos suportados descritos na lista.)
Exemplo de um KS de boas práticas de React JS:
Boas Práticas para Desenvolvimento em React Estrutura do Projeto Organização de Pastas:
Separe componentes, páginas, serviços e estilos em pastas distintas. Utilize uma estrutura de pastas que facilite a escalabilidade e manutenção do projeto.
src/ ├── components/ ├── pages/ ├── services/ ├── styles/ ├── utils/ └── App.js Componentes:
Crie componentes reutilizáveis e modulares. Separe componentes de apresentação (dumb components) de componentes contêineres (smart components). Código Limpo Nomenclatura:
Utilize nomes descritivos e consistentes para variáveis, funções e componentes. Use PascalCase para nomes de componentes e camelCase para variáveis e funções. Comentários:
Adicione comentários apenas quando necessário para explicar o "porquê" do código, não o "como". Mantenha os comentários atualizados. Formatação:
Utilize um linter (como ESLint) e um formatador de código (como Prettier) para manter a consistência do código. Configure o linter para seguir as melhores práticas e convenções de código. Gerenciamento de Estado Hooks:
Utilize hooks como useState, useEffect, useContext, etc., para gerenciar o estado e os efeitos colaterais. Evite o uso excessivo de hooks em um único componente; considere dividir o componente se necessário. Context API:
Utilize a Context API para gerenciar estados globais que precisam ser acessados por múltiplos componentes. Evite o uso excessivo de contextos; utilize bibliotecas como Redux ou MobX para estados mais complexos. Estilização CSS Modules:
Utilize CSS Modules para escopo local de estilos e evitar conflitos de nomes. Nomeie os arquivos de estilo com o sufixo .module.css. Styled Components:
Considere o uso de bibliotecas como Styled Components para estilização baseada em componentes. Mantenha a consistência na escolha da metodologia de estilização. Performance Lazy Loading:
- 3. APIs
Você pode incluir vários arquivos OpenAPI (Swagger) para aprimorar a experiência de codificação. Isso permite que a StackSpot AI utilize um catálogo de APIs preexistentes, oferecendo implementações de código que já integram essas APIs. Os benefícios incluem sugestões de código que utilizam essas APIs e uma integração facilitada com serviços e sistemas externos.
Exemplo de KS de API no formato OpenAPI 3.0 que define uma API simples para gerenciamento de usuários, com operações de GET, POST, PUT e DELETE.
exemplo de APIopenapi: 3.0.0
info:
title: Minha API
description: Esta é a minha API
version: 1.0.0
paths:
/users:
get:
operationId: getUser
description: Obtém uma lista de usuários
responses:
'200':
description: Usuários encontrados
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'404':
description: Nenhum usuário encontrado
post:
operationId: createUser
description: Cria um novo usuário
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/User'
responses:
'201':
description: Usuário criado com sucesso
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'400':
description: Dados inválidos
/users/{userId}:
get:
operationId: getUserById
description: Obtém um usuário pelo ID
parameters:
- in: path
name: userId
schema:
type: integer
required: true
responses:
'200':
description: Usuário encontrado
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'404':
description: Usuário não encontrado
put:
operationId: updateUser
description: Atualiza um usuário existente
parameters:
- in: path
name: userId
schema:
type: integer
required: true
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/User'
responses:
'200':
description: Usuário atualizado com sucesso
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'400':
description: Dados inválidos
delete:
operationId: deleteUser
description: Exclui um usuário
parameters:
- in: path
name: userId
schema:
type: integer
required: true
responses:
'204':
description: Usuário excluído com sucesso
'404':
description: Usuário não encontrado
components:
schemas:
User:
type: object
properties:
id:
type: integer
example: 1
name:
type: string
example: João da Silva
email:
type: string
example: joao.da.silva@example.com
phone:
type: string
example: "(11) 9999-9999"
Knowledge Source Objects (Objetos de Knowledge Source)
Um Knowledge Object é parte de um Knowledge Source. Os Knowledge Sources na StackSpot AI são enriquecidos por meio da adição de múltiplos Knowledge Objects provenientes de diferentes fontes. Mesmo após a criação de um Knowledge Source, você pode continuar a adicionar novos objetos, expandindo o conteúdo e o contexto disponível. Por exemplo, quando você cria um Knowledge Source personalizado e adiciona novos arquivos Markdown, esse arquivo é automaticamente quebrado em diversos Knowledge Objects para otimizar o uso de tokens e melhorar a eficiência do modelo de linguagem.
- A plataforma suporta os formatos de arquivo:
.json
,.yml
,.yaml
,.md
,.txt
,.pdf
,.zip
. O tamanho máximo permitido por arquivo é de 10 MiB.
Como usar Knowledge Sources
Os Knowledge Sources podem ser utilizados em diferentes contextos dentro da StackSpot AI, como:
- Agentes: ao criar um Agente, você pode atribuir Knowledge Sources específicos para melhorar as respostas do Agente.
- Quick Commands: os Knowledge Sources podem ser usados para fornecer contexto adicional em Quick Commands, automatizando tarefas com base em informações específicas.
- IDE: ao usar a extensão da StackSpot AI na sua IDE, você pode selecionar Knowledge Sources para enriquecer as respostas da IA enquanto codifica.
Gerenciamento de Knowledge Sources
Você pode gerenciar seus Knowledge Sources diretamente no Portal da StackSpot AI. Isso inclui:
- Atualizar Knowledge Sources: adicionar novos Knowledge Objects ou modificar os existentes.
- Excluir Knowledge Sources: remover Knowledge Sources que não são mais necessários.
- Compartilhar Knowledge Sources: compartilhar Knowledge Sources com outros membros da sua equipe ou conta.
Exemplo de Uso de Knowledge Sources
Você está desenvolvendo uma aplicação que utiliza várias APIs internas da sua empresa. Ao adicionar essas APIs como Knowledge Sources, a StackSpot AI pode sugerir implementações de código que já integram essas APIs, economizando tempo e garantindo que o código gerado esteja alinhado com os padrões da sua organização.