Créer des embeddings
POST/embeddings
Transforme un texte ou plusieurs en vecteurs, au format d'OpenAI : un vecteur par entrée, dans l'ordre d'envoi. Même clé, même crédit que le chat ; seuls les tokens d'entrée sont facturés.
BientôtOuverture prochaine : ce qui suit décrit le service tel qu'il fonctionnera.
https://evanesca.app/api/v1/embeddingsOuvre au lancementBearer $EVANESCA_API_KEYAuthorizationstringrequisBearer suivi de votre clé, qui commence par sk-eva-.
Content-Typestringrequisapplication/json : le corps est du JSON.
Corps de la requête
application/jsonmodelstringrequisUn modèle d'embedding. Modèles de chat et d'embedding forment deux listes distinctes : un modèle de chat envoyé ici répond 404, tout comme un modèle d'embedding envoyé à /chat/completions.
inputchaîne | tableau de chaînesrequisUn texte ou un tableau de textes, chacun dans la fenêtre de contexte du modèle (les modèles).
Où l'appel tourne, ce qu'il coûte
Evanesca · au dossier
- Exécuté
- Scaleway · Paris, France
qwen3-embedding-8b,bge-multilingual-gemma2
- Scaleway · Paris, France
- L'opérateur garde
Scaleway peut conserver et lire les requêtes qui provoquent des erreurs ou paraissent abusives, jusqu'à 14 jours (page confidentialité de Scaleway).
- Coût
- Par million de tokens d'entrée, TVA comprise — pas de prix de sortie :
qwen3-embedding-8b0,168 €,bge-multilingual-gemma20,168 €. - En-têtes de réponse
x-evanesca-operator: scalewayx-evanesca-location: paris
Recherche et RAG
Gardez le même modèle pour indexer et pour interroger : les vecteurs de deux modèles différents ne se comparent pas. Comment choisir un modèle, ses dimensions et le schéma RAG : Embeddings.
Erreurs
| Statut | type | Signification |
|---|---|---|
| 400 | invalid_ | Le corps n'est pas du JSON valide, ou model ou input manque. |
| 401 | invalid_ | Pas de clé, une clé malformée, ou une clé révoquée. |
| 402 | insufficient_ | Votre crédit est à zéro ou en dessous. Rechargez pour continuer. |
| 404 | model_ | Identifiant inconnu, modèle qu'Evanesca ne sert pas, ou modèle de chat envoyé ici. |
| 502 | upstream_ | L'opérateur est injoignable, a renvoyé une réponse illisible, ou a refusé le compte d'Evanesca elle-même. Votre clé n'est pas en cause : réessayez. |
Les autres erreurs d'opérateur vous parviennent avec son statut et son corps, et Retry-After quand il en envoie un (erreurs).
curl https://evanesca.app/api/v1/embeddings \
-H "Authorization: Bearer $EVANESCA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-embedding-8b",
"input": ["Clause 4.2 du contrat", "Export de la paie, mars"]
}'import os
from openai import OpenAI
client = OpenAI(base_url="https://evanesca.app/api/v1", api_key=os.environ["EVANESCA_API_KEY"])
vectors = client.embeddings.create(
model="qwen3-embedding-8b",
input=["Clause 4.2 du contrat", "Export de la paie, mars"],
)
print(len(vectors.data[0].embedding)) # 4096import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://evanesca.app/api/v1", apiKey: process.env.EVANESCA_API_KEY });
const vectors = await client.embeddings.create({
model: "qwen3-embedding-8b",
input: ["Clause 4.2 du contrat", "Export de la paie, mars"],
});
console.log(vectors.data[0].embedding.length); // 4096package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{"model": "qwen3-embedding-8b", "input": ["Clause 4.2 du contrat", "Export de la paie, mars"]}`)
req, err := http.NewRequest("POST", "https://evanesca.app/api/v1/embeddings", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("EVANESCA_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.Status, string(out))
}{
"object": "list",
"model": "qwen3-embedding-8b",
"data": [
{ "object": "embedding", "index": 0, "embedding": [ … ] },
{ "object": "embedding", "index": 1, "embedding": [ … ] }
],
"usage": { "prompt_tokens": 14, "total_tokens": 14 }
}{
"error": {
"message": "Insufficient credit balance. Add credit to your account to continue.",
"type": "insufficient_credit"
}
}