Skip to content

LLM プロバイダー (llm_provider) ​

LLM 解析プロバイダーを追加します。@provider(points.LLM_PROVIDER, id=...) は ab_sdk.llm.LLMProviderAdapter のサブクラスを返します。id は info.id と同じにする必要があります。 ユーザーは設定 → LLM → プロバイダーで選びます。組み込みプロバイダーの id は上書きできません。

python
from ab_sdk import Plugin, points, provider
from ab_sdk.llm import AdapterContext, LLMProviderAdapter, ProviderInfo


class MyAdapter(LLMProviderAdapter):
    info = ProviderInfo(
        id="my-llm",
        display_name="My LLM",
        auth_kind="api_key",
        needs_base_url=True,
        default_model="my-model",
    )
    ...  # parse / list_models などの抽象メソッドを実装


class MyPlugin(Plugin):
    @provider(points.LLM_PROVIDER, id="my-llm")
    def adapter(self):
        return MyAdapter

要点 ​

  • ProviderInfo がフロントエンドのフォームとプロバイダー一覧を決めます。auth_kind は api_key、oauth、device_code のいずれかです。
  • アダプターは AdapterContext から、モデル名、キー、base_url、タイムアウト、プロキシ対応の httpx2 クライアントのファクトリを受け取ります。グローバル設定は読みません。
  • ファクトリは httpx2.AsyncClient を返します(SDK 0.6 から。以前は httpx)。ネットワークエラーを捕捉するには httpx2.HTTPError などのクラスを使います。httpx の例外クラスではこのエラーを捕捉できません。
  • サブスクリプション型のプロバイダー(oauth / device_code)は、認証フローのフック(AuthChallenge、TokenSet)を実装します。認証情報が無効になり、更新にも失敗したときは AuthExpiredError を送出します。AB はこのプロバイダーのブレーカーを作動させ、llm_auth_failure イベントを送ります。
  • plugin.json 形式の既存の LLM プラグイン(llm-plugins として公開)は引き続き使えます。新しいプラグインは plugin.toml とこの拡張ポイントを使います。

AutoBangumiはMITライセンスの下で公開されています。(最新版: v3.3.2)