Embeddings
POST /embeddings transforma texto em um vetor. model e input são obrigatórios.
Copia as instruções de configuração desta página, para colar no seu agente de código.
Ver o prompt
Me ajude a configurar isto para usar a Bayle AI, uma API compatível com a OpenAI. Guia completo: https://docs.bayle.ai/pt-br/guides/embeddings/
Objetivo: gerar embeddings de texto pela Bayle a partir deste projeto.
1. Ache ou crie o client da OpenAI deste projeto (Python ou Node, o que ele já usar) e aponte-o para a Bayle:
Python: OpenAI(api_key=os.environ["BAYLE_API_KEY"], base_url="https://api.bayle.ai")
Node: new OpenAI({ apiKey: process.env.BAYLE_API_KEY, baseURL: 'https://api.bayle.ai' })
2. Escolha um modelo de embedding: curl -s "https://api.bayle.ai/models?type=embedding" | jq -r '.data[].id'
Me mostre a lista e deixe eu escolher o EMBEDDING_MODEL_ID.
3. Gere o embedding de uma string: client.embeddings.create(model=EMBEDDING_MODEL_ID, input="The quick brown fox.") e leia result.data[0].embedding.
4. Gere vários de uma vez passando um array em `input`; uma requisição custa menos que várias. Os resultados voltam em `data`, cada um com um `index`: ordene por `index` antes de usar.
5. Campos opcionais: `dimensions` pede um vetor menor em modelos que suportam; `encoding_format` é "float" (padrão) ou "base64". Com base64 cada embedding é uma string base64, então decodifique (Python: np.frombuffer(base64.b64decode(s), dtype=np.float32)). `user` é aceito, mas ignorado.
6. Teste: gere o embedding de "The quick brown fox." e imprima o tamanho do vetor e `usage.total_tokens` (é igual a `usage.prompt_tokens`, pois nada é gerado).
Regras:
1. A base URL é https://api.bayle.ai exatamente como está escrita. Não acrescente nenhum caminho a ela.
2. Leia a key da variável de ambiente BAYLE_API_KEY. Nunca escreva a key em um arquivo que você criar, em um comando, em um commit nem no chat. Onde a ferramenta guarda a key na própria tela de configurações, me diga onde colar. Se BAYLE_API_KEY não estiver definida, pare e peça que eu crie uma key em https://chat.bayle.ai/developers e a exporte.
3. Pegue os ids de modelo só de GET https://api.bayle.ai/models (sem key). Nunca chute um.
4. Termine com uma requisição de teste de verdade, me mostre o resultado e liste os arquivos que você alterou.Gerando o embedding de uma string
Seção intitulada “Gerando o embedding de uma string”result = client.embeddings.create( model="EMBEDDING_MODEL_ID", input="The quick brown fox.",)print(len(result.data[0].embedding))const result = await client.embeddings.create({ model: 'EMBEDDING_MODEL_ID', input: 'The quick brown fox.',})console.log(result.data[0].embedding.length)curl https://api.bayle.ai/embeddings \ -H "Authorization: Bearer $BAYLE_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model": "EMBEDDING_MODEL_ID", "input": "The quick brown fox."}'Encontre um modelo de embedding com GET /models?type=embedding.
Gerando o embedding de vários de uma vez
Seção intitulada “Gerando o embedding de vários de uma vez”Passe um array. Os resultados voltam em data, na mesma ordem em que os inputs foram enviados,
cada um carregando seu index.
result = client.embeddings.create( model="EMBEDDING_MODEL_ID", input=["first document", "second document", "third document"],)vectors = [item.embedding for item in sorted(result.data, key=lambda d: d.index)]Fazer em lote é o caminho mais barato quando você tem muitos inputs curtos, já que é uma única requisição em vez de várias.
| Campo | Tipo | Notas |
|---|---|---|
model |
string | Obrigatório. Um id de modelo de embedding. |
input |
string ou array de strings | Obrigatório. |
dimensions |
integer | Solicita um vetor de saída menor, para modelos que suportam reduzi-lo. |
encoding_format |
float ou base64 |
Padrão é float. |
user |
string | Aceito por compatibilidade com o client da OpenAI. A Bayle não age sobre ele. |
Com encoding_format: "base64", cada embedding volta como uma string em base64 em vez de um
array de números. É um payload menor, que vale a pena em lotes grandes, mas você precisa
decodificá-lo:
import base64import numpy as np
raw = base64.b64decode(result.data[0].embedding)vector = np.frombuffer(raw, dtype=np.float32)Uso de tokens
Seção intitulada “Uso de tokens”A resposta carrega usage.prompt_tokens e usage.total_tokens. Para embeddings esses são o
mesmo número, já que nada é gerado.