Chats do dataset
Chats são exemplos de treino do projeto. Cada chat contém mensagens ordenadas
system, user e assistant, além de nome, descrição e tags opcionais.
CRUD e endpoints em lote
GET /api/v1/projects/{owner_slug}/{project_slug}/chats
POST /api/v1/projects/{owner_slug}/{project_slug}/chats
POST /api/v1/projects/{owner_slug}/{project_slug}/chats/bulk
GET /api/v1/projects/{owner_slug}/{project_slug}/chats/{chat_id}
PUT /api/v1/projects/{owner_slug}/{project_slug}/chats/{chat_id}
DELETE /api/v1/projects/{owner_slug}/{project_slug}/chats/{chat_id}
GET /api/v1/projects/{owner_slug}/{project_slug}/chats/categories
GET /api/v1/projects/{owner_slug}/{project_slug}/tags
Crie um exemplo:
{
"name": "trocas-001",
"description": "Resposta aprovada sobre trocas",
"tags": ["suporte"],
"messages": [
{"role": "user", "text": "Posso trocar isto?"},
{"role": "assistant", "text": "Sim, em até 30 dias."}
]
}
Listagem e detalhe incluem message_count calculado, updated_at durável e
source anulável. A origem é csv, api, editor ou playground; linhas
antigas podem ter null. Escritas por chave de API são classificadas pelo
servidor e não podem falsificar a proveniência.
Inferências de texto salvas automaticamente pelo endpoint compatível com
OpenAI têm source=api e as tags inference e model:<referência do modelo>.
Elas seguem a amostragem do proprietário e nunca capturam chamadas de terceiros
em modelos compartilhados/públicos. Um salvamento manual do Playground usa
source=playground. Origens históricas ausentes continuam null; nomes e tags
editáveis não servem para deduzir a origem.
Navegação em escala
A lista sempre usa páginas limitadas por cursor, sem parâmetro de ativação.
page e page_size não fazem parte deste contrato:
GET .../chats?limit=25
GET .../chats?limit=25&cursor=<next_cursor>
GET .../chats?limit=25&before=<previous_cursor>
GET .../chats?limit=25&boundary=last
cursor, before e boundary são mutuamente exclusivos e opacos. Os cursores
pertencem ao projeto. A resposta inclui next_cursor, previous_cursor,
is_last_page, total_count, total_count_capped e search_applied. Contagens
são limitadas a 10.000 para não percorrer datasets arbitrariamente grandes.
Filtros rodam antes da paginação. A busca cobre nome e texto das mensagens;
termos menores que dois caracteres não são aplicados e termos acima de 128
retornam 422. Use filtros tags, source e categories normalizado.
GET .../chats/categories?q= retorna no máximo 50 facetas visíveis com contagem.
Mutação e treino
Editar ou excluir um chat muda o dataset atual, mas nunca reescreve um job já criado. Antes de começar, cada job congela sua entrada e a participação em treino/avaliação. Use os endpoints de dataset do job para consultar a entrada histórica exata.