llm://接続文字列の出番です
llm:// URLでモデルとプロバイダーの設定を簡素化する
更新: この記事をきっかけに、
llm://URIスキームのInternet-Draftと、それを支えるllm-stringsnpmパッケージが生まれました。実装はGitHubにもあります。
データベースに接続するだけなのに、雑多な環境変数の寄せ集めをやりくりしていた、あの嫌な時代を覚えていますか?
繊細な設定の塔でした。DB_HOST、DB_PORT、DB_USER、DB_PASSWORD、DB_NAME……いや、DB_USERNAMEだったか? DB_PASSとDB_PWDのどっちだ? 今回はPG_*プレフィックスが必要なのか? そもそもタイムアウト設定はどこに書くんだ?
HOSTを大文字にし忘れただけで本番ビルドを崩壊させる、トランプの家のような脆い仕組みです。
そこへ誰かが、「URLを使えばいいじゃないか¹」という素晴らしいアイデアを思いつきました。
postgres://user:pass@host:5432/dbnameたった1本の文字列。必要なものが全部入っている。どこでも一貫してパースできる。ポータブル。言ってしまえば……美しい?
では、なぜ私たちはLLMを1999年のように扱っているのでしょう?
環境変数の爆発
今の私の.envファイルは、捨てられたAPIキーの墓場です。OPENAI_API_KEY、ANTHROPIC_API_KEY、MISTRAL_API_KEY、GROQ_API_KEY。Azureの話は始めないでください。「こんにちは」と言うだけで、エンドポイント、デプロイ名、APIバージョン、そしてキーが必要です。
見た目が悪いだけではありません。摩擦そのものです。モデルを入れ替えたり、新しいプロバイダーを試したりするたびに、初期化コードを書き換え、プロバイダー固有のパラメータ名をドキュメントで探し、環境設定にさらに3行追加しなければなりません。
だったら、DB URLのアイデアを……盗んで借りてくればいいのでは?
LLM接続文字列の登場
モデルとのインターフェース全体を、たった1行で設定するところを想像してください。
llm://api.openai.com/gpt-5.2?reasoning_effort=none&temp=0.7&max_tokens=1500llm://api.z.ai/glm-4.7?top_p=0.9&cache=trueLLM接続文字列の構造
スキームはllm://です。ホストはプロバイダーのAPIベースURL。パスはモデル名です。そしてクエリパラメータで、通常ならコードを散らかすことになる実行時オプションをすべて扱います。
認証が必要? それなら追加すればいい。
postgres://と同じように、認証情報をそのまま埋め込めます。
llm://app-name:sk-proj-123456@api.openai.com/gpt-5.2?reasoning_effort=none&temp=0.7注:認証情報をURLに入れたまま公開ログへ貼り付ければ、セキュリティリスクになる。とはいえ、最近のログサービスはこうしたパターンのマスキングにはかなり強い。それに正直なところ、あなたは.envファイルをそれほど丁寧に扱っているだろうか? 検証し、サニタイズし、注意して使おう。
レジリエンス? もちろん入れよう。
多くのデータベースライブラリは、複数のホストを指定してラウンドロビン方式のフェイルオーバーに対応しています。AIエージェントだけが同じ信頼性を持てない理由はありません。
llms://primary.gpt,backup.gpt/gpt-6?temp=0.9llms://のsはタイプミスではありません。複数形です。primary.gptが応答しなくなれば、クライアントは自動的にbackup.gptへ再試行します。複雑なルーターのロジックは不要です。
認証情報からエンドポイント、ハイパーパラメータまで、すべてが1本の文字列に収まる。
代替フォーマット
私はllm://に固執しているわけではありません。重要なのは個別のスキームではなく、標準そのものです。
標準の構造は保ったまま、簡潔さのためにプロバイダー固有のスキームを使う世界も想像できます。
ollama://localhost:11434/llama3vercel://anthropic/sonnet-4.5?temp=0.8&web_search={"maxUses":3}bedrock://us-west-2.aws/anthropic/sonnet-4.5?temp=0.8&cacheControl=ephemeral正確な構文がどうであれ、中心的なメリットは明白です。
- ポータビリティ: ローカルスクリプトからクラウドワーカーまで、設定全体をコピー&ペーストできる。
- CLIフレンドリー: スクリプトに引数を1つ渡せばいい。
my-agent --model "llm://..."のほうが、my-agent --model gpt-4 --temp 0.7 --key $KEY --host ...よりずっとましです。 - 言語非依存: どのプログラミング言語にも堅牢なURLパーサーがあります。検証、パース、サニタイズが最初から手に入る。
データベースの世界がこれに気づくまで、何十年もかかった。
朗報なのは、AIの時間感覚なら、たった半バイブ年ほど前の話だということだ。
結論
新たに複雑な設定標準を作る必要も、YAMLベースのマニフェストファイルを増やす必要もありません。必要なのは、インターネットの他の部分でこの30年間ずっと機能してきた道具を使うことだけです。
車輪の再発明はやめて、LLM接続をデータベース接続と同じように扱い始めましょう。あなたの.envファイルも、あなたの正気も、きっと感謝してくれます。

