Strona głównaPrzewodnik
Klucz API AnythingLLM: Połącz z niestandardowym endpointem OpenAI
Aby użyć klucza API AnythingLLM z niestandardowym endpointem, wybierz dostawcę Generic OpenAI i podaj URL bazowy, klucz oraz ID modelu. Instrukcje i testy znajdziesz poniżej.
Zaktualizowano
Który klucz API masz na myśli
Użytkownicy wyszukujący anything llm api key zwykle mają na myśli jedną z dwóch rzeczy, które łatwo pomylić. Pierwsza to klucz, który AnythingLLM wysyła do dostawcy modelu w celu generowania odpowiedzi. Druga to klucz API deweloperski, który tworzy samo AnythingLLM, aby inne programy mogły wywoływać jego API. To różne klucze o różnych zadaniach.
Ten artykuł dotyczy pierwszej opcji: dostarczenia AnythingLLM klucza i endpointu do kompatybilnego z OpenAI API czatu. Pobierzesz klucz ze strony klucza API, wkleisz go do AnythingLLM wraz z base URL https://api.llmapisource.com/v1 i użyjesz ID modelu uncensored. Jeśli potrzebujesz wywołać AnythingLLM z własnego kodu, wygeneruj ten klucz w ustawieniach AnythingLLM; nie ma on związku z kluczem tego dostawcy.
Zanim zaczniesz: przetestuj klucz poza AnythingLLM
Połowa pytań o pomoc dotyczących niestandardowych endpointów to błędny klucz lub literówka w URL. Trzydziestosekundowy test curl oddziela „błędny endpoint” od „błędnie skonfigurowanej aplikacji”. Wypisz najpierw modele:
curl https://api.llmapisource.com/v1/models \
-H "Authorization: Bearer YOUR_KEY" | grep uncensored
Powinieneś zobaczyć linię zawierającą uncensored. Następnie wyślij jedno zapytanie czatu:
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
}'
Jeśli oba wywołania zadziałają, klucz i URL są poprawne, a wszystko, co zawiedzie później, to problem z ustawieniami aplikacji. Jeśli jeszcze nie masz klucza, zarejestruj się przez Google lub e-mail i hasło. Nowi użytkownicy mogą jednym kliknięciem na stronie klucza odebrać $0,50 kredytu próbnego bez podawania karty, ważnego przez 7 dni. To wystarczy, aby ukończyć całą konfigurację i przetestować ją.
Konfiguracja w AnythingLLM
AnythingLLM obsługuje wielu dostawców LLM, a jedną z opcji jest ogólna opcja kompatybilna z OpenAI. Sposób opisu menu zmienia się między wersjami, więc traktuj poniższe nazwy jako przewodnik, a nie dokładny skrypt.
- Otwórz ustawienia AnythingLLM i znajdź preferencję LLM (czasem oznaczoną jako dostawca LLM).
- Wybierz Generic OpenAI z listy dostawców.
- Ustaw Adres URL bazowy na
https://api.llmapisource.com/v1. Dołącz/v1i nie dodawaj końcowego/chat/completions; aplikacja doda tę ścieżkę sama. - Wklej swój klucz do pola Klucz API. Aplikacja wysyła go jako
Authorization: Bearer, czego oczekuje to API. - Ustaw Chat Model Name na
uncensored. - Ustaw Okno kontekstu tokenów na 100000. Okno modelu wynosi 100 000 tokenów (prompt plus completion), a zbyt niska wartość spowoduje wcześniejsze przycinanie historii w AnythingLLM.
- Pozostaw max tokens puste lub ustaw bezpieczny limit. Jest to opcjonalne po stronie API.
- Zapisz, otwórz przestrzeń roboczą i wyślij wiadomość.
Jeśli przestrzeń robocza ma własne ustawienia czatu, sprawdź, czy korzysta z domyślnego dostawcy, a nie z nadpisania. Przestrzeń robocza przypięta do poprzedniego dostawcy to częsty powód, że zmiana wydaje się bezskuteczna.
Embeddingi i dokumenty wymagają osobnego komponentu
AnythingLLM wykonuje dwie czynności. Czatuje z modelem i indeksuje dokumenty, by model mógł na nie odpowiadać. Druga czynność używa modelu embeddingowego, a to API nie oferuje embeddingów. Udostępnia POST /v1/chat/completions i GET /v1/models, z tekstem na wejściu i wyjściu.
Nie blokuje to Cię. AnythingLLM pozwala wybrać embedder oddzielnie od modelu czatu i może używać wbudowanego lokalnego embeddera lub innego skonfigurowanego dostawcy. Ustaw embedder na coś innego niż ten endpoint i używaj go tylko do modelu czatu. Dotyczy to również funkcji obrazowych lub audio: model jest tylko tekstowy, bez generowania obrazu, audio lub wideo oraz bez fine-tuningu.
Podczas rozmowy z dokumentami pobrane fragmenty są wklejane do promptu, więc rośnie liczba tokenów wejściowych. Przy cenie $0,15 za 1 mln tokenów wejściowych, prompt o 6000 tokenach z 500 tokenami outputu kosztuje 6000 x $0,15 / 1 000 000 = $0,0009 za input plus 500 x $0,50 / 1 000 000 = $0,00025 za output, czyli łącznie $0,00115 na pytanie. Workspace'y z dużą liczbą dokumentów są droższe niż zwykły czat, ale nadal kosztują ułamek centa na pytanie.
Sprawdzanie strumieniowania, narzędzi i trybu JSON
AnythingLLM strumieniuje odpowiedzi, a API obsługuje Server-Sent Events z stream: true, kończąc się fragmentem użycia. Jeśli odpowiedzi pojawiają się naraz, a nie token po tokenie, problemem jest zwykle proxy przed aplikacją buforujące odpowiedzi. Możesz sprawdzić strumieniowanie ze skryptu za pomocą 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 i tryb JSON działają przez ten sam endpoint czatu, co ma znaczenie przy budowaniu agentów lub przepływów wokół aplikacji. Tryb JSON to pojedyncze pole:
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."}
]
}'
Narzędzia używają standardowych pól tools i tool_choice, a wyniki zwracane są jako komunikaty role: "tool". Czy AnythingLLM udostępnia daną funkcję agenta, zależy od wersji aplikacji, więc przetestuj wywołanie w skrypcie, a następnie spróbuj funkcji w aplikacji. W dokumentacji znajdziesz pełny przykład wywoływania narzędzi.
Naprawianie typowych błędów
| Objaw | Prawdopodobna przyczyna | Naprawa |
|---|---|---|
| Błąd 401 lub błąd uwierzytelniania | Klucz wklejony ze spacją lub stary klucz | Skopiuj klucz ponownie ze strony klucza i wklej go bez spacji |
| 404 lub "nie znaleziono" | Brak /v1 w bazowym adresie URL lub obecność /chat/completions na końcu | Użyj dokładnie https://api.llmapisource.com/v1 |
| Model nie znaleziony | Nazwa modelu wpisana inaczej | Użyj uncensored, małe litery, nic więcej |
429 z rate_limited | Powyżej 300 zapytań na minutę (60 na darmowym kredycie próbnym) | Zwolnij lub batchuj mniej agresywnie |
429 z concurrency | Więcej niż 8 zapytań naraz (2 na darmowym kredycie próbnym) | Zmniejsz liczbę równoległych przestrzeni roboczych lub agentów; strumień zajmuje slot do końca |
429 z nagłówkiem Retry-After: 5 | Tymczasowe przeciążenie | Poczekaj 5 sekund i ponów |
| Odpowiedzi przycinane zbyt wcześnie | Niski max tokens w aplikacji | Podnieś go lub wyczyść |
Nagłówek X-Request-Id w każdej odpowiedzi pomaga, jeśli skontaktujesz się z wsparciem w sprawie konkretnego wywołania. Saldo w X-Balance-USD również szybko mówi, czy awaria wynika z pustego konta.
Lepsze odpowiedzi z przestrzeni roboczej
Gdy połączenie działa, kilka nawyków w przestrzeni roboczej robi różnicę. Napisz system prompt dla przestrzeni roboczej, który określa rolę, ton i co robić, gdy dokumenty nie zawierają odpowiedzi. Bez tej instrukcji model często zgadnie, a pewnie brzmiące zgadywanie jest gorsze niż zwykłe „Nie znalazłem tego w dokumentach”.
Temperatura to drugi regulator. Przy odpowiadaniu na pytania na podstawie własnych plików niska wartość 0,2–0,4 trzyma odpowiedzi blisko tekstu pobranego. Przy burzy mózgów lub pisaniu podnieś ją do 0,8. API przekazuje temperature, top_p, stop, seed i kary, więc wszystko, co wyśle aplikacja, trafia do modelu bez zmian.
Śledź, ile snippetów przestrzeń robocza dołącza do każdego pytania. Każdy dodatkowy snippet to więcej tokenów wejściowych. Przy oknie 100 000 tokenów masz miejsce, ale płacisz za każdy z nich w każdej turze. Zacznij od małej liczby snippetów i zwiększaj ją tylko, gdy odpowiedzi pomijają istotne materiały.
Uwagi dotyczące prywatności i kosztów
Prompty wysyłane przez API nie są używane do trenowania. Twoje dokumenty nadal trafiają do endpointu wewnątrz promptów, gdy AnythingLLM pobiera fragmenty tekstu, więc zdecyduj, z jakimi przestrzeniami roboczymi czujesz się komfortowo, wysyłając dane. Dla materiałów, które muszą pozostać na Twoim komputerze, użyj modelu lokalnego.
Rozliczenie jest elastyczne, oparte na przedpłaconym kredycie: $0,15 za 1 mln tokenów wejściowych i $0,50 za 1 mln tokenów wyjściowych, doładowania od $20 do $500, z bonusami 5% od kwoty $50, 10% od $100 i 15% od $200. Kredyt nie wygasa, a nieudane lub odrzucone zapytania nie są rozliczane. Na stronie z cenami znajdziesz dostępne metody płatności.
Więcej przewodników
Pytania i odpowiedzi
Którą opcję dostawcy wybrać w AnythingLLM?
Wybierz Generic OpenAI. Wprowadź https://api.llmapisource.com/v1 jako bazowy URL, swój klucz jako klucz API oraz uncensored jako nazwę modelu czatu.
Jakie okno kontekstu tokenów powinienem wpisać?
Użyj wartości 100000, co odpowiada oknu 100 000 tokenów modelu przeznaczonego na prompt i uzupełnienie.
Czy mogę użyć tego endpointu do embeddingów w AnythingLLM?
Nie. API obsługuje tylko uzupełnienia czatu i listę modeli. Wybierz inny embedding w AnythingLLM i użyj tego endpointu do modelu czatu.
Czy klucz API dla deweloperów w AnythingLLM jest tym samym?
Nie. Ten klucz jest tworzony wewnątrz AnythingLLM, aby inne programy mogły wywoływać aplikację. Klucz z tej usługi to ten, który AnythingLLM wysyła do endpointu czatu.
