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とこの拡張ポイントを使います。