JA ▾
API キーを取得

ホームガイド

AnythingLLM用APIキー:カスタムOpenAIエンドポイントに接続

カスタムエンドポイントでAnythingLLM APIキーを使用するには、「Generic OpenAI」プロバイダーを選択し、ベースURL、キー、モデルIDを入力します。手順とテストは以下に記載しています。

どのAPIキーを指していますか

anything llm api keyで検索する人は、通常2つの意味のどちらかを指しており、これらは混同しやすいです。1つ目は、モデルプロバイダに送信して回答を生成させるAnythingLLMのキーです。2つ目は、AnythingLLM自体が作成する開発者用APIキーで、他のプログラムがAnythingLLM自身のAPIを呼び出せるようにします。これらは異なる役割を持つ異なるキーです。

この記事では1つ目を取り上げます:AnythingLLMにOpenAI互換チャットAPI用のキーとエンドポイントを設定する方法です。APIキーページからキーを取得し、ベースURL https://api.llmapisource.com/v1と共にAnythingLLMに貼り付け、モデルID uncensoredを使用します。もし代わりに自分のコードからAnythingLLMを呼び出す必要がある場合は、AnythingLLMの設定内でそのキーを生成してください。それはこのプロバイダーキーとは無関係です。

開始前に:AnythingLLMの外でキーをテスト

カスタムエンドポイントに関するサポート質問の半分は、間違ったキーまたはURLの入力ミスが原因です。curlで30秒のテストを行うと、「エンドポイントが間違っている」のか「アプリの設定が間違っている」のかを区別できます。まずモデルを一覧表示します:

curl https://api.llmapisource.com/v1/models \
  -H "Authorization: Bearer YOUR_KEY" | grep uncensored

uncensoredを含む行が表示されるはずです。次にチャットリクエストを1つ送信します:

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
  }'

両方の呼び出しが成功すれば、キーとURLは正常であり、その後に失敗するものはすべてアプリ内の設定の問題です。まだキーを持っていない場合は、Googleまたはメールアドレスとパスワードでサインアップしてください。新しいユーザーはキーページでワンクリックで$0.50の試用クレジットを請求でき、カードは不要で7日間有効です。これで全体のセットアップとテストが完了するのに十分です。

AnythingLLMでの設定

AnythingLLMは複数のLLMプロバイダーをサポートしており、その中には汎用OpenAI互換オプションが含まれています。メニューの表記はバージョンによって異なるため、以下の名称は正確な手順書ではなくガイドとして扱ってください。

  1. AnythingLLMの設定を開き、LLM設定(LLMプロバイダーとラベル付けされている場合もあります)を探します。
  2. プロバイダーリストからGeneric OpenAIを選択します。
  3. Base URLを https://api.llmapisource.com/v1に設定します。/v1を含め、末尾に/chat/completionsは付けないようにしてください。アプリがパスを自動で追加します。
  4. キーをAPI Keyフィールドに貼り付けます。アプリはこれをAuthorization: Bearerとして送信し、これはこのAPIが期待する形式です。
  5. Chat Model Nameを uncensoredに設定します。
  6. Token context windowを100000に設定します。モデルのウィンドウは100,000トークン(プロンプトと補完を含む)であり、ここでの値が低いと、AnythingLLMが必要以上に早く履歴を切り捨てます。
  7. max_tokensは空のままにするか、許容できる上限に設定します。API側ではオプションです。
  8. 保存し、ワークスペースを開いてメッセージを送信します。

ワークスペースに独自のチャット設定がある場合は、以前のオーバーライドではなくシステムデフォルトのプロバイダーを使用していることを確認してください。ワークスペースが以前のプロバイダーに固定されている場合、変更が何の効果もないように見えるのはよくある理由です。

埋め込みとドキュメントには別のコンポーネントが必要です

AnythingLLMは2つの役割を果たします。モデルとチャットを行い、ドキュメントをインデックスしてモデルがそれらから回答できるようにします。2つ目の役割には埋め込みモデルが必要ですが、このAPIは埋め込みを提供しません。テキスト入力とテキスト出力のPOST /v1/chat/completionsとGET /v1/modelsを公開します。

これはあなたを妨げません。AnythingLLMでは埋め込みモデルをチャットモデルとは別に選択でき、内蔵のローカル埋め込みモデルまたは設定した別のプロバイダーを使用できます。埋め込みモデルをこのエンドポイント以外のものにし、このエンドポイントはチャットモデルのみに使用してください。画像や音声の生成についても同様で、モデルはテキストのみ対応であり、画像、音声、動画の生成やファインチューニングはありません。

ドキュメントとチャットする際、取得されたパッセージはプロンプトに貼り付けられるため、入力トークンが増加します。1M入力トークンあたり$0.15で、500トークンの出力を含む6,000トークンのプロンプトの場合、入力は6,000 x $0.15 / 1,000,000 = $0.0009、出力は500 x $0.50 / 1,000,000 = $0.00025、つまり質問あたり$0.00115かかります。ドキュメント中心のワークスペースは通常のチャットよりコストがかかりますが、質問あたりまだ1セント未満です。

ストリーミング、ツール、JSONモードの確認

AnythingLLMは返信をストリーミングし、APIはstream: trueでServer-Sent Eventsをサポートし、usageチャンクで終了します。返信がトークン単位ではなく一括で表示される場合、問題は通常エンドポイントではなくアプリ前面のプロキシによるレスポンスのバッファリングです。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)

ツール呼び出しとJSONモードは同じチャットエンドポイントを通じて機能し、アプリの周りにエージェントやフローを構築する場合に重要です。JSONモードは単一のフィールドです:

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とtool_choiceフィールドを使用し、結果はrole: "tool"メッセージとして返されます。AnythingLLMが特定のエージェント機能を公開するかどうかはアプリのバージョンに依存するため、まずスクリプトで呼び出しをテストし、その後アプリで機能を確認してください。docsには完全なツール呼び出しの例が示されています。

よくあるエラーの修正

症状考えられる原因修正方法
401または認証エラーキーにスペースが含まれている、または古いキーキーページからキーを再度コピーし、スペースなしで貼り付けます
404または「見つかりません」ベースURLに/v1が含まれていない、または末尾に/chat/completionsがある正確にhttps://api.llmapisource.com/v1を使用します
モデルが見つからないモデル名の入力ミスuncensoredを使用します。小文字で、何も追加されないようにしてください。
429とrate_limited1分間に300リクエスト以上(試用キーの場合は60)速度を落とすか、バッチ処理の積極度を下げます
429とconcurrency一度に8リクエスト以上(試用キーでは2)並列のワークスペースやエージェントを減らします。ストリームは終了するまでスロットを保持します
Retry-After: 5 ヘッダー付きの 429 エラー一時的な過負荷5秒待機して再試行
返信が早期に切り捨てられるアプリ内のmax_tokensの値が低い引き上げるかクリアします

すべてのレスポンスにあるX-Request-Idヘッダーは、特定の呼び出しについてサポートに連絡する際に役立ちます。X-Balance-USDの残高も、失敗が単にアカウントが空であることによるものかどうかを素早く示します。

ワークスペースからより良い回答を得る

接続が機能したら、いくつかのワークスペースの習慣が目に見える違いを生みます。ワークスペース用のシステムプロンプトを作成し、役割、トーン、およびドキュメントに回答が含まれていない場合の対応方法を明記します。最後の指示がない場合、モデルは推測することが多く、自信満々に聞こえる推測は、「ドキュメントにその情報が見つかりませんでした」という単純な回答よりも悪いです。

温度はもう一つの調整ポイントです。自分のファイルに対する質問応答には、0.2から0.4のような低い値を使用し、回答を取得されたテキストに近づけます。ブレインストーミングやドラフト作成には、0.8まで引き上げます。APIはtemperature、top_p、stop、seed、ペナルティを渡すため、アプリが送信するものはすべてモデルにそのまま届きます。

ワークスペースが各質問に貼り付けるスニペットの数に注意を払ってください。追加のスニペットごとに入力トークンが増え、100,000トークンのウィンドウがあるため余裕はありますが、各ターンでそれらすべてに対して課金されます。スニペットの数を少なく始め、関連する情報が回答に含まれていない場合にのみ増やします。

プライバシーとコストに関する注意事項

API経由で送信されるプロンプトは学習に使用されません。AnythingLLMが文章を検索する際、プロンプト内にドキュメントが含まれてエンドポイントに送信されるため、送信しても問題ないワークスペースを選択してください。絶対にマシンから離れてはならない資料には、ローカルモデルを使用してください。

課金は前払いクレジットからの従量制です:入力トークン1Mあたり$0.15、出力トークン1Mあたり$0.50。チャージは$20〜$500で、$50以上で5%、$100以上で10%、$200以上で15%のボーナスが付きます。クレジットは期限切れにならず、失敗または拒否されたリクエストには課金されません。料金ページに支払い方法の一覧があります。

質問と回答

AnythingLLMでどのプロバイダーオプションを選択すべきですか?

「Generic OpenAI」を選択します。ベースURLにhttps://api.llmapisource.com/v1、APIキーにキーを入力し、チャットモデル名にuncensoredと入力します。

どのトークンコンテキストウィンドウを入力すべきですか?

100000を使用します。これは、プロンプトと補完を合わせたモデルの100,000トークンのウィンドウに一致します。

AnythingLLMでこのエンドポイントを使用して埋め込みを作成できますか?

いいえ。APIはチャット補完とモデルリストのみを提供します。AnythingLLMで別のエンベッダーを選択し、このエンドポイントはチャットモデル用に維持してください。

AnythingLLMのデベロッパーAPIキーは同じものですか?

いいえ。そのキーはAnythingLLM内部で作成され、他のプログラムがアプリを呼び出すために使用されます。このサービスからのキーは、AnythingLLMがチャットエンドポイントに送信するものです。

発光ケーブルとキーでサーバーにリンクされたアプリブロックのアイソメトリックシーン。APIキーの接続を示す