HomeGids
AnythingLLM API-sleutel: koppel een aangepast OpenAI-endpoint
Om een AnythingLLM API-sleutel te gebruiken met een aangepast endpoint, kies je de Generic OpenAI-provider en voer je een base URL, een sleutel en een model ID in. De stappen en tests staan hieronder.
Bijgewerkt
Welke API-sleutel bedoel je
Mensen die zoeken naar anything llm api key bedoelen meestal een van twee dingen, en die twee zijn makkelijk te verwarren. Het eerste is de sleutel die AnythingLLM naar een modelprovider stuurt zodat deze antwoorden kan genereren. Het tweede is een developer API-sleutel die AnythingLLM zelf aanmaakt, zodat andere programma's de eigen API van AnythingLLM kunnen aanroepen. Het zijn verschillende sleutels met verschillende taken.
Dit artikel behandelt de eerste: AnythingLLM een sleutel en endpoint geven voor een OpenAI-compatible chat-API. Je haalt de sleutel van de API-sleutelpagina, plakt deze in AnythingLLM samen met de base URL https://api.llmapisource.com/v1, en gebruikt het model ID uncensored. Als je in plaats daarvan AnythingLLM vanuit je eigen code wilt aanroepen, genereer je die sleutel binnen de AnythingLLM-instellingen; die heeft niets te maken met deze providersleutel.
Voordat je begint: test de sleutel buiten AnythingLLM
De helft van de supportvragen over aangepaste endpoints blijkt een verkeerde sleutel of een typefout in de URL te zijn. Een test van dertig seconden met curl maakt onderscheid tussen "het endpoint is verkeerd" en "de app is verkeerd geconfigureerd". Lijst eerst de modellen op:
curl https://api.llmapisource.com/v1/models \
-H "Authorization: Bearer YOUR_KEY" | grep uncensored
Je zou een regel moeten zien met daarin uncensored. Stuur vervolgens één chatverzoek:
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
}'
Als beide calls werken, zijn de sleutel en URL goed en is alles wat later misgaat een instelling binnen de app. Als je nog geen sleutel hebt, meld je aan met Google of met e-mail en wachtwoord. Nieuwe gebruikers kunnen met één klik op de sleutelpagina $0,50 aan trial credit claimen, zonder kaart en geldig voor 7 dagen. Dat is genoeg om deze hele setup te voltooien en te testen.
Het instellen in AnythingLLM
AnythingLLM ondersteunt verschillende LLM-providers, en een daarvan is een generieke OpenAI-compatible optie. De tekst in menu's verschilt tussen versies, dus behandel de namen hieronder als richtlijn in plaats van een exact script.
- Open de AnythingLLM-instellingen en zoek de LLM-voorkeur (soms gelabeld als LLM-provider).
- Kies Generic OpenAI uit de providerlijst.
- Stel de Base URL in op
https://api.llmapisource.com/v1. Voeg de/v1toe en laat de afsluitende/chat/completionsweg; de app voegt het pad zelf toe. - Plak je sleutel in het veld API Key. De app stuurt deze als
Authorization: Bearer, wat deze API verwacht. - Stel de Chat Model Name in op
uncensored. - Stel de Token context window in op 100000. Het venster van het model is 100.000 tokens, prompt plus completion, en een lage waarde hier zorgt ervoor dat AnythingLLM je geschiedenis eerder trimt dan nodig is.
- Laat max tokens leeg, of stel een plafond in waar je comfortabel mee bent. Het is optioneel aan de API-kant.
- Sla op, open een workspace en stuur een bericht.
Als de workspace zijn eigen chatinstellingen heeft, controleer dan of deze de systeemstandaardprovider gebruikt in plaats van een oudere override. Een workspace die aan een eerdere provider is vastgepind, is een veelvoorkomende reden waarom een wijziging niets lijkt te doen.
Embeddings en documenten hebben een apart onderdeel nodig
AnythingLLM doet twee taken. Het voert chats met een model, en het indexeert je documenten zodat het model daaruit kan antwoorden. De tweede taak gebruikt een embedding model, en deze API biedt geen embeddings. Het exposeert POST /v1/chat/completions en GET /v1/models, met tekst in en tekst uit.
Dat blokkeert je niet. AnythingLLM laat je de embedder apart kiezen van het chatmodel, en het kan een ingebouwde lokale embedder of een andere provider gebruiken die je configureert. Stel de embedder in op iets dat niet dit endpoint is, en gebruik dit endpoint alleen voor het chatmodel. Dit geldt ook voor afbeeldings- of audiofuncties: het model is alleen voor tekst, zonder afbeeldings-, audio- of videogeneratie en zonder fine-tuning.
Wanneer je chat met documenten, worden opgehaalde passages in de prompt geplakt, dus de input tokens groeien. Bij $0,15 per 1M input tokens kost een prompt van 6.000 tokens met 500 tokens output 6.000 x $0,15 / 1.000.000 = $0,0009 voor input plus 500 x $0,50 / 1.000.000 = $0,00025 voor output, of $0,00115 per vraag. Documentzware workspaces kosten meer dan gewone chat, maar nog steeds een fractie van een cent per vraag.
Streaming, tools en JSON-modus controleren
AnythingLLM streamt antwoorden, en de API ondersteunt Server-Sent Events met stream: true, eindigend met een usage chunk. Als je antwoorden in één keer verschijnen in plaats van token per token, is het probleem meestal een proxy voor de app die responses bufferd, niet het endpoint. Je kunt streaming vanuit een script controleren met de OpenAI Python SDK:
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)
Tool calling en JSON-modus werken via hetzelfde chat-endpoint, wat belangrijk is als je agents of flows rond de app bouwt. JSON-modus is een enkel veld:
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."}
]
}'
Tools gebruiken de gebruikelijke velden tools en tool_choice, met resultaten teruggegeven als role: "tool" berichten. Of AnythingLLM een bepaalde agentfunctie exposeert, hangt af van de app-versie, dus test de call eerst in een script en probeer daarna de functie in de app. De docs tonen een volledig tool-calling voorbeeld.
Veelvoorkomende fouten oplossen
| Symptoom | Waarschijnlijke oorzaak | Oplossing |
|---|---|---|
| 401 of een authenticatiefout | Sleutel geplakt met een spatie, of een oude sleutel | Kopieer de sleutel opnieuw van de sleutelpagina en plak deze zonder spaties |
| 404 of "niet gevonden" | Base URL mist de /v1, of heeft de /chat/completions aan het einde | Gebruik exact https://api.llmapisource.com/v1 |
| Model niet gevonden | Modelnaam anders getypt | Gebruik uncensored, lowercase, niets toegevoegd |
429 met rate_limited | Meer dan 300 requests per minuut (60 op een trial key) | Vertraag of batch minder agressief |
429 met concurrency | Meer dan 8 verzoeken tegelijk (2 op een proefsleutel) | Verminder parallelle werkruimtes of agents; een stream houdt zijn slot vast tot het eindigt |
429 met een Retry-After: 5 header | Tijdelijke overbelasting | Wacht 5 seconden en probeer opnieuw |
| Antwoorden worden vroeg afgekapt | Laag max_tokens in de app | Verhoog het of maak het leeg |
De X-Request-Id header bij elk antwoord helpt als je contact opneemt met support over een specifiek verzoek. Het saldo in X-Balance-USD vertelt je ook snel of een fout gewoon komt door een lege rekening.
Betere antwoorden krijgen van een werkruimte
Zodra de verbinding werkt, maken een paar gewoontes in de werkruimte een zichtbaar verschil. Schrijf een systeemprompt voor de werkruimte die de rol, de toon en wat je moet doen als de documenten het antwoord niet bevatten, aangeeft. Zonder die laatste instructie raadt het model vaak, en een gok die zelfverzekerd klinkt is erger dan een gewoon "Ik heb dat niet in de documenten gevonden".
Temperatuur is de andere schakelaar. Voor vraag- en antwoordgesprekken over je eigen bestanden houdt een lage waarde zoals 0,2 tot 0,4 de antwoorden dicht bij de opgehaalde tekst. Voor brainstormsessies of het opstellen van teksten kun je het verhogen naar 0,8. De API geeft temperatuur, top_p, stop, seed en de straffactoren door, dus wat de app verstuurt bereikt het model ongewijzigd.
Houd in de gaten hoeveel snippets de workspace aan elke vraag vastplakt. Elke extra snippet is meer input tokens, en met een 100.000-token venster heb je ruimte, maar je betaalt ook voor elke snippet bij elke beurt. Begin met een klein aantal snippets en verhoog het alleen wanneer antwoorden relevante materiaal missen.
Privacy- en kostenopmerkingen
Prompts die via de API worden verstuurd, worden niet gebruikt voor training. Je documenten reizen nog steeds naar de endpoint binnen prompts wanneer AnythingLLM passages ophaalt, dus beslis welke werkruimtes je comfortabel verstuurt. Voor materiaal dat je machine nooit mag verlaten, gebruik je in plaats daarvan een lokaal model.
Facturatie is pay-as-you-go vanuit prepaid tegoed: $0,15 per 1M input tokens en $0,50 per 1M output tokens, opwaarderen van $20 tot $500, met bonussen van 5% vanaf $50, 10% vanaf $100 en 15% vanaf $200. Credit verloopt nooit, en mislukte of geweigerde verzoeken worden niet in rekening gebracht. De prijzenpagina vermeldt de betaalmethoden.
Meer handleidingen
Vragen en antwoorden
Welke provider-optie kies ik in AnythingLLM?
Kies voor Generic OpenAI. Voer https://api.llmapisource.com/v1 in als de base URL, je sleutel als de API-sleutel, en uncensored als de naam van het chatmodel.
Welk token contextvenster moet ik invoeren?
Gebruik 100000, wat overeenkomt met het 100.000-token contextvenster van het model voor prompt plus generatie.
Kan ik deze endpoint gebruiken voor embeddings in AnythingLLM?
Nee. De API biedt alleen chatcompleties en een modellijst. Kies een andere embedder in AnythingLLM en behoud deze endpoint voor het chatmodel.
Is de AnythingLLM API-sleutel voor ontwikkelaars hetzelfde?
Nee. Die sleutel wordt aangemaakt binnen AnythingLLM zodat andere programma's de app kunnen aanroepen. De sleutel van deze dienst is wat AnythingLLM naar de chat-endpoint stuurt.
