Le modèle ORYKSA (compatible OpenAI)
Utilisez ORYKSA comme modèle IA dans toute automatisation, à la place d’OpenAI ou OpenRouter. Vos nœuds n8n communiquent avec YouTube, Instagram, LinkedIn, Google Drive ou Google Sheets avec vos propres comptes ; ORYKSA rédige, résume, classe, extrait et décide quel outil appeler. L’utilisation est déduite des interactions de votre forfait.
Deux modèles
| Modèle | Description |
|---|---|
oryksa | Le modèle général. Il suit votre prompt système et vos messages exactement comme vous les envoyez. Il prend en charge les outils, la sortie JSON et le streaming. Il ne connaît rien de votre compte et n’agit jamais dessus. C’est celui qui remplace OpenAI. |
oryksa-assistant | Votre propre assistant ORYKSA, avec la connaissance et les données de votre entreprise. Il ne fait que répondre. Les outils sont ignorés. |
Tout autre nom de modèle (par exemple gpt-4o, déjà utilisé dans un flux) reçoit une réponse de oryksa, donc les flux existants continuent de fonctionner.
curl https://api.oryksa.com/v1/chat/completions \
-H "Authorization: Bearer oryk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "oryksa",
"messages": [
{"role": "system", "content": "You write LinkedIn posts. Short, one idea, no hashtags."},
{"role": "user", "content": "New video: 5 mistakes when pricing your services."}
]
}'import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["ORYKSA_API_KEY"], base_url="https://api.oryksa.com/v1")
out = client.chat.completions.create(
model="oryksa",
messages=[
{"role": "system", "content": "You write LinkedIn posts. Short, one idea, no hashtags."},
{"role": "user", "content": "New video: 5 mistakes when pricing your services."},
],
)
print(out.choices[0].message.content, out.usage.total_tokens)Ce qui est pris en charge
| Fonctionnalité | Prise en charge |
|---|---|
messages | system, developer, user, assistant et tool, complet et dans l'ordre. Texte et images (image_url avec https ou data:image, jusqu'à 4). |
tools, tool_choice | Appels de fonctions au format OpenAI : la réponse contient tool_calls et finish_reason: "tool_calls". |
response_format | json_object et json_schema. |
stream | Vrais événements envoyés par le serveur, morceau par morceau, y compris les appels d'outils, se terminant par [DONE]. stream_options.include_usage est pris en charge. |
usage | Comptage réel des tokens. Vos interactions apparaissent dans le champ supplémentaire oryksa. |
temperature, top_p, stop, seed, max_tokens, max_completion_tokens | Pris en charge. |
n | Seulement 1. |
functions, function_call | Non pris en charge : utilisez tools. |
Outils
Envoyez les outils présents dans votre flux. Quand le modèle en souhaite un, il répond avec l'appel ; votre flux l'exécute et renvoie le résultat dans un message tool . Chaque réponse du modèle utilise une interaction, donc un agent qui fait 4 tours en utilise 4.
{
"model": "oryksa",
"messages": [{"role": "user", "content": "Add Ana with 3 units to the sheet"}],
"tools": [{
"type": "function",
"function": {
"name": "sheets_append",
"description": "Append a row to the sheet",
"parameters": {"type": "object", "properties": {"row": {"type": "array", "items": {"type": "string"}}}, "required": ["row"]}
}
}]
}{
"id": "chatcmpl-8f1c2a7e5b9d4c3fa1e0b6d2c4f7a9e1",
"object": "chat.completion",
"created": 1791072000,
"model": "oryksa",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"tool_calls": [{"id": "call_1", "type": "function", "function": {"name": "sheets_append", "arguments": "{\"row\": [\"Ana\", \"3\"]}"}}]
},
"finish_reason": "tool_calls"
}],
"usage": {"prompt_tokens": 96, "completion_tokens": 18, "total_tokens": 114},
"oryksa": {"interactions_spent": 1, "interactions_remaining": 2873, "interactions_limit": 3000}
}Sortie JSON
Pour l'extraction et la classification, demandez une structure fixe :
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "lead",
"strict": true,
"schema": {
"type": "object",
"properties": {"name": {"type": "string"}, "email": {"type": "string"}},
"required": ["name", "email"],
"additionalProperties": false
}
}
}Limites
| Limite | Valeur |
|---|---|
| Texte dans une requête (messages, définitions d'outils, arguments d'outils) | 32 000 caractères |
| Réponse | 2 000 tokens (un max_tokens supérieur est limité à cette valeur ; une réponse trop longue se termine par finish_reason: "length") |
| Requêtes | 60 par minute et par compte |
| Images | 4 par requête |
Au-delà d'une limite, l'API répond 400 et indique le champ dans param. Rien n'est jamais coupé sans avertissement.
Interactions
Une interaction pour chaque réponse générée par le modèle, comme sur tous les autres canaux. Quand le forfait est épuisé, l'API répond 402 interaction_limit_reached.
Utilisez-le dans n8n
- Dans n8n, créez une authentification de type OpenAI. Dans API Key collez votre clé
oryk_live_et dans Base URL écrivezhttps://api.oryksa.com/v1. - Dans tout nœud acceptant un modèle de chat (AI Agent, Basic LLM Chain, Information Extractor, Text Classifier, Summarization Chain), ajoutez un OpenAI Chat Model avec cette authentification et choisissez le modèle
oryksa. - L’ Utilisez l'API Responses l'option peut être activée ou non : ORYKSA répond dans les deux formats.
- Connectez vos autres nœuds (YouTube, Google Sheets, Google Drive, LinkedIn) avec vos propres comptes, comme vous le feriez avec n'importe quel autre modèle.
Erreurs
| Code | Description |
|---|---|
400 invalid_request | Le corps n'est pas valide. param indique le champ. |
400 input_too_large | Plus de 32 000 caractères de texte. |
400 content_policy | La requête a été refusée par le filtre de sécurité du contenu. |
402 interaction_limit_reached | Plus d'interactions disponibles pour cette période. |
429 rate_limited | Plus de 60 requêtes par minute. |
503 model_unavailable | Le modèle n'est pas disponible pour le moment. Veuillez réessayer dans un instant. |
Identifiez vos requêtes dans le relevé d'utilisation
Dans le nœud HTTP Request , activez Send Headers et ajoutez :
X-Oryksa-Source=n8nX-Oryksa-Workflow={{ encodeURIComponent($workflow.name) }}X-Oryksa-Workflow-Id={{ $workflow.id }}X-Oryksa-Execution-Id={{ $execution.id }}
Dans le nœud OpenAI dans ce nœud, vous ne pouvez définir qu'un en-tête fixe, dans l'authentification : ajoutez X-Oryksa-Source = n8n. Le relevé affiche alors n8n, sans le nom du workflow. Pour voir chaque workflow, utilisez le nœud HTTP Request.
Make et Zapier fonctionnent de la même façon, avec make ou zapier dans X-Oryksa-Source.
Responses API
POST https://api.oryksa.com/v1/responses est le format Responses d'OpenAI sur le même modèle que /v1/chat/completions. Il est destiné aux nœuds et bibliothèques qui utilisent déjà ce format : changez uniquement l'URL de base et la clé.
Ce qui fonctionne : input (texte ou liste de messages), instructions, outils de fonction (tools, tool_choice, et les éléments function_call et function_call_output dans la conversation), sortie JSON (text.format avec json_object ou json_schema), max_output_tokens, temperature, top_p et stream.
Ce qui n'existe pas : les outils propres à OpenAI (recherche web, recherche de fichiers, interpréteur de code) et les conversations enregistrées. ORYKSA ne conserve rien : store est toujours false et previous_response_id renvoie une erreur 400. Envoyez l'ensemble de la conversation à chaque requête.
Coût : 1 interaction par réponse, identique à /v1/chat/completions. Limites : identiques (32 000 caractères de texte par requête, une réponse jusqu'à 2 000 tokens, 60 requêtes par minute). Rien n'est facturé en cas d'échec de la requête.
Les modèles sont identiques : oryksa (le modèle général, tout autre nom est traité comme oryksa) et oryksa-assistant (votre assistant, réponse uniquement).
curl https://api.oryksa.com/v1/responses \
-H "Authorization: Bearer oryk_live_..." -H "Content-Type: application/json" \
-d '{"model": "oryksa", "instructions": "Answer in one sentence.", "input": "What is an embedding?"}'Embeddings
POST https://api.oryksa.com/v1/embeddings transforme les textes en vecteurs, au format OpenAI, pour la recherche par signification et les bases de connaissances (par exemple les nœuds vectoriels de n8n).
Envoyez input (un texte ou une liste de textes, jusqu'à 256 textes et 32 000 caractères au total par requête). Optionnel : dimensions et encoding_format (float ou base64). Le champ model est accepté et ignoré : le modèle est toujours oryksa-embeddings.
Coût : 1 interaction par requête, quel que soit le nombre de textes. Rien n'est facturé en cas d'échec de la requête.
Important : les vecteurs ne peuvent être comparés qu'avec des vecteurs générés par le même modèle. Ne mélangez pas, dans le même store, des vecteurs ORYKSA avec ceux d'un autre fournisseur.
curl https://api.oryksa.com/v1/embeddings \
-H "Authorization: Bearer oryk_live_..." -H "Content-Type: application/json" \
-d '{"input": ["first text", "second text"]}'
