AccueilGuide
Clé API AnythingLLM : Connecter un endpoint OpenAI personnalisé
Pour utiliser une clé API AnythingLLM avec un endpoint personnalisé, choisissez le fournisseur Generic OpenAI et saisissez une URL de base, une clé et un ID de modèle. Les étapes et les tests sont ci-dessous.
Mis à jour
Quelle clé API voulez-vous dire
Les personnes qui recherchent anything llm api key veulent généralement dire l'une des deux choses suivantes, et les deux sont faciles à confondre. La première est la clé qu'AnythingLLM envoie à un fournisseur de modèles pour qu'il puisse générer des réponses. La seconde est une clé API pour développeurs qu'AnythingLLM crée lui-même, afin que d'autres programmes puissent appeler l'API d'AnythingLLM. Il s'agit de clés différentes avec des fonctions différentes.
Cet article couvre le premier cas : donner à AnythingLLM une clé et un endpoint pour une API de chat compatible OpenAI. Vous prendrez la clé depuis la page clé API, la collerez dans AnythingLLM avec l'URL de base https://api.llmapisource.com/v1, et utiliserez l'ID de modèle uncensored. Si vous devez plutôt appeler AnythingLLM depuis votre propre code, générez cette clé dans les paramètres d'AnythingLLM ; elle n'a rien à voir avec cette clé de fournisseur.
Avant de commencer : testez la clé en dehors d'AnythingLLM
La moitié des questions de support concernant les endpoints personnalisés s'avèrent être une mauvaise clé ou une faute de frappe dans l'URL. Un test de trente secondes avec curl sépare « l'endpoint est incorrect » de « l'application est mal configurée ». Listez d'abord les modèles :
curl https://api.llmapisource.com/v1/models \
-H "Authorization: Bearer YOUR_KEY" | grep uncensored
Vous devriez voir une ligne incluant uncensored. Ensuite, envoyez une requête de chat :
curl https://api.llmapisource.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Reply with the word ready."}],
"max_tokens": 20
}'
Si les deux appels fonctionnent, la clé et l'URL sont valides et tout ce qui échoue plus tard est un paramètre dans l'application. Si vous n'avez pas encore de clé, inscrivez-vous avec Google ou avec email et mot de passe. Les nouveaux utilisateurs peuvent réclamer 0,50 $ de crédit d'essai en un clic sur la page clé, sans besoin de carte et valable 7 jours. Cela suffit pour terminer toute cette configuration et la tester.
Configuration dans AnythingLLM
AnythingLLM prend en charge plusieurs fournisseurs de LLM, et l'une des options est une option générique compatible OpenAI. La formulation des menus change entre les versions, considérez donc les noms ci-dessous comme un guide plutôt que comme un script exact.
- Ouvrez les paramètres d'AnythingLLM et trouvez la préférence LLM (parfois étiquetée fournisseur LLM).
- Choisissez Generic OpenAI dans la liste des fournisseurs.
- Définissez la URL de base sur
https://api.llmapisource.com/v1. Incluez le/v1et omettez un/chat/completionsfinal ; l'application ajoute le chemin elle-même. - Collez votre clé dans le champ Clé API. L'application l'envoie en tant que
Authorization: Bearer, ce que cette API attend. - Définissez le Nom du modèle de chat sur
uncensored. - Définissez la fenêtre de contexte à 100000. La fenêtre du modèle est de 100 000 tokens, prompt plus complétion, et une valeur faible ici amènera AnythingLLM à tronquer votre historique plus tôt que nécessaire.
- Laissez max tokens vide, ou définissez un plafond qui vous convient. C'est facultatif du côté de l'API.
- Enregistrez, ouvrez un espace de travail et envoyez un message.
Si l'espace de travail a ses propres paramètres de chat, vérifiez qu'il utilise le fournisseur par défaut du système plutôt qu'une ancienne substitution. Un espace de travail épinglé à un fournisseur précédent est une raison courante pour laquelle un changement semble ne rien faire.
Les embeddings et les documents nécessitent un élément séparé
AnythingLLM accomplit deux tâches. Il discute avec un modèle, et il indexe vos documents pour que le modèle puisse répondre à partir de ceux-ci. La deuxième tâche utilise un modèle d'embedding, et cette API n'offre pas d'embeddings. Elle expose POST /v1/chat/completions et GET /v1/models, avec du texte en entrée et du texte en sortie.
Cela ne vous bloque pas. AnythingLLM vous permet de choisir l'embedder séparément du modèle de chat, et il peut utiliser un embedder local intégré ou un autre fournisseur que vous configurez. Définissez l'embedder sur quelque chose qui n'est pas cet endpoint, et utilisez cet endpoint uniquement pour le modèle de chat. Il en va de même pour les fonctionnalités image ou audio : le modèle est uniquement textuel, sans génération d'image, d'audio ou de vidéo et sans fine-tuning.
Lorsque vous discutez avec des documents, les passages récupérés sont collés dans le prompt, donc les tokens d'entrée augmentent. À 0,15 $ par 1M de tokens d'entrée, un prompt de 6 000 tokens avec 500 tokens de sortie coûte 6 000 x 0,15 $ / 1 000 000 = 0,0009 $ pour l'entrée plus 500 x 0,50 $ / 1 000 000 = 0,00025 $ pour la sortie, soit 0,00115 $ par question. Les espaces de travail lourds en documents coûtent plus cher que le chat simple, mais toujours une fraction de centime par question.
Vérification du streaming, des outils et du mode JSON
AnythingLLM diffuse des réponses, et l'API prend en charge les Server-Sent Events avec stream: true, se terminant par un fragment d'utilisation. Si vos réponses apparaissent toutes en même temps au lieu d'être token par token, le problème est généralement un proxy devant l'application qui met en mémoire tampon les réponses, et non l'endpoint. Vous pouvez vérifier le streaming à partir d'un script avec le SDK Python OpenAI :
from openai import OpenAI
client = OpenAI(
base_url="https://api.llmapisource.com/v1",
api_key="YOUR_KEY",
)
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "List three uses of a local knowledge base."}],
stream=True,
stream_options={"include_usage": True},
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
if chunk.usage:
print("\ntokens:", chunk.usage.prompt_tokens, chunk.usage.completion_tokens)
L'appel de fonctions et le mode JSON fonctionnent via le même endpoint de chat, ce qui est important si vous construisez des agents ou des flux autour de l'application. Le mode JSON est un seul champ :
curl https://api.llmapisource.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"response_format": {"type": "json_object"},
"messages": [
{"role": "system", "content": "Return a JSON object with keys title and summary."},
{"role": "user", "content": "Summarize: a notes app that works offline."}
]
}'
Les outils utilisent les champs usuels tools et tool_choice, avec des résultats retournés en tant que messages role: "tool". Le fait qu'AnythingLLM expose une fonctionnalité agent donnée dépend de la version de l'application, testez donc l'appel dans un script d'abord, puis essayez la fonctionnalité dans l'application. Les docs montrent un exemple complet d'appel d'outils.
Correction des erreurs courantes
| Symptôme | Cause probable | Correction |
|---|---|---|
| Erreur 401 ou erreur d'authentification | Clé collée avec un espace, ou ancienne clé | Copiez à nouveau la clé depuis la page clé et collez-la sans espaces |
| 404 ou « non trouvé » | URL de base manquante /v1, ou contient /chat/completions à la fin | Utilisez exactement https://api.llmapisource.com/v1 |
| Modèle non trouvé | Nom de modèle tapé différemment | Utilisez uncensored, en minuscules, rien d'ajouté |
429 avec rate_limited | Plus de 300 requêtes par minute (60 sur une clé d'essai) | Ralentissez ou regroupez moins agressivement |
429 avec concurrency | Plus de 8 requêtes à la fois (2 sur une clé d'essai) | Réduisez le nombre d'espaces de travail parallèles ou d'agents ; un flux occupe son slot jusqu'à sa fin |
429 avec un en-tête Retry-After: 5 | Surcharge temporaire | Attendez 5 secondes et réessayez |
| Réponses coupées prématurément | max_tokens faible dans l'application | Augmentez-le ou effacez-le |
L'en-tête X-Request-Id sur chaque réponse aide si vous contactez support au sujet d'un appel spécifique. Le solde dans X-Balance-USD vous indique également rapidement si un échec est simplement dû à un compte vide.
Obtenir de meilleures réponses depuis un espace de travail
Une fois la connexion établie, quelques habitudes de l'espace de travail font une différence visible. Rédigez un prompt système pour l'espace de travail qui indique le rôle, le ton et ce qu'il faut faire lorsque les documents ne contiennent pas la réponse. Sans cette dernière instruction, un modèle fera souvent une devinette, et une devinette qui semble convaincante est pire qu'un simple « Je n'ai pas trouvé cela dans les documents ».
La température est l'autre levier. Pour répondre à des questions sur vos propres fichiers, une valeur faible telle que 0,2 à 0,4 maintient les réponses proches du texte récupéré. Pour le brainstorming ou la rédaction, augmentez-la vers 0,8. L'API transmet temperature, top_p, stop, seed et les pénalités telles quelles, de sorte que tout ce que l'application envoie atteint le modèle inchangé.
Surveillez le nombre d'extraits que l'espace de travail joint à chaque question. Chaque extrait supplémentaire représente plus de tokens d'entrée, et avec une fenêtre de 100 000 tokens, vous avez de la marge, mais vous payez pour chacun à chaque tour. Commencez avec un petit nombre d'extraits et augmentez-le uniquement lorsque les réponses manquent de matériel pertinent.
Notes sur la confidentialité et les coûts
Les prompts envoyés via l'API ne sont pas utilisés pour l'entraînement. Vos documents transitent toujours vers l'endpoint à l'intérieur des prompts lorsque AnythingLLM récupère des extraits, alors choisissez les espaces de travail que vous êtes à l'aise d'envoyer. Pour les données qui ne doivent jamais quitter votre machine, utilisez un modèle local à la place.
La facturation est en paiement à l'usage depuis le crédit prépayé : $0.15 par 1M de tokens d'entrée et $0.50 par 1M de tokens de sortie, recharges de $20 à $500, avec des bonus de 5 % à partir de $50, 10 % à partir de $100 et 15 % à partir de $200. Le crédit n'expire jamais, et les requêtes échouées ou refusées ne sont pas facturées. La page de tarification liste les moyens de paiement.
Plus de guides
Questions et réponses
Quelle option de fournisseur choisir dans AnythingLLM ?
Choisissez Generic OpenAI. Saisissez https://api.llmapisource.com/v1 comme URL de base, votre clé comme clé API, et uncensored comme nom du modèle de chat.
Quelle fenêtre de contexte en tokens dois-je saisir ?
Saisissez 100000, ce qui correspond à la fenêtre de 100 000 tokens du modèle pour le prompt et la complétion.
Puis-je utiliser cet endpoint pour les embeddings dans AnythingLLM ?
Non. L’API ne sert que des complétions de chat et une liste de modèles. Choisissez un autre embedder dans AnythingLLM et gardez cet endpoint pour le modèle de chat.
La clé API développeur d’AnythingLLM est-elle la même chose ?
Non. Cette clé est créée à l’intérieur d’AnythingLLM afin que d’autres programmes puissent appeler l’application. La clé de ce service est celle qu’AnythingLLM envoie à l’endpoint de chat.
