Tema
Sites
A chave cvk_... nunca pode ir para o navegador. Quem abre a página consegue ler qualquer coisa que o seu JavaScript recebe, e com a chave alguém usaria os agentes e gastaria os créditos do cliente como quiser. Por isso a API também não aceita chamadas feitas direto de uma página: o navegador bloqueia a resposta (CORS) de qualquer site que não esteja na lista de origens da Cavori.
Use um servidor no meio
O site fala com o seu servidor, e o seu servidor fala com a API da Cavori levando a chave:
text
Navegador -> Seu servidor -> api.cavori.com.br
(página) (guarda a chave) (Authorization: Bearer cvk_...)O seu servidor faz o que o navegador não pode:
- Identifica quem está no site (login, sessão ou um id anônimo que você gera) e usa isso como
external_user_id. - Abre a conversa uma vez por pessoa (
POST /v1/conversations) e guarda oiddevolvido. - A cada mensagem da pessoa, chama
POST /v1/chat/completionscom a chave e devolve o texto, ou o stream, para a página. - Se usa webhooks, recebe as respostas da equipe e as repassa à página (por exemplo, por SSE ou websocket do seu servidor).
Alguns cuidados:
- Não deixe a página escolher o
external_user_id. Ele define de quem é o histórico e a memória. Derive-o da sessão no servidor, senão qualquer visitante poderia ler a conversa de outro mudando o valor. - Limite o uso por visitante. A chave é compartilhada por todos os seus visitantes e tem limites por minuto. Aplique um limite por pessoa no seu servidor para que um visitante não esgote a cota dos outros.
- Valide o tamanho e o conteúdo da mensagem antes de repassar.
- Se a chave vazar, revogue e troque na hora.
Sem servidor próprio
Esta API foi feita para quem tem um backend. Quem não tem um servidor, ou não quer manter um só para isso, não deve colocar a chave na página: use o chat no site da Cavori, que dispensa o backend e não expõe chave nenhuma.
