# PydanticAI > PydanticAI のエージェントを Kiln で動かす方法です。インストール、検証済みの run_sync 呼び出し、名前が変わった OpenAIModel の代わりに使う OpenAIChatModel、max_tokens を書く場所を説明します。 Source: https://kiln.bricksum.com/docs/ja/sdks/pydantic-ai PydanticAI はモデルオブジェクトの上にエージェントを作ります。OpenAI のモデルは、base URL とキーから作ったプロバイダーを受け取ります。エージェントの定義でほかに変える箇所はありません。 ## インストール **Python** ```bash pip install pydantic-ai ``` ## 接続 **Python** ```python import os from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIChatModel from pydantic_ai.providers.openai import OpenAIProvider model = OpenAIChatModel( "qwen3-32b", provider=OpenAIProvider( base_url="https://api.bricksum.com/v1", api_key=os.environ["KILN_API_KEY"], # sk-bk-... ), ) agent = Agent(model, system_prompt="Answer briefly.", model_settings={"max_tokens": 800}) print(agent.run_sync("Write a haiku about kilns.").output) ``` ## Kiln での違い - **OpenAIModel ではなく OpenAIChatModel** PydanticAI ではクラス名が変わり、古いガイドには今も OpenAIModel が残っています。下の注記のバージョンではその import が失敗するため、OpenAIProvider とともに OpenAIChatModel を使ってください。 - **max_tokens は model_settings に** リクエストの設定はモデルではなくエージェントが保持します。reasoning トークンもこの上限に含まれ、回答のテキストが出る前に上限に達すると、PydanticAI は空の結果を返さずに UnexpectedModelBehavior を送出します。余裕を確保してください。例の 800 はこのモデルで測定していない初期値のため、実行が UnexpectedModelBehavior を送出したら増やしてください。 base URL、認証、すべてのエンドポイントが共通で受け取るリクエストパラメータ、レスポンスの形式、ストリーミング、エラーコードは、どの SDK を使っても同じです。これらは [API リファレンス](https://kiln.bricksum.com/docs/ja/api-reference)に一度だけまとめています。 上の呼び出しが到達するエンドポイントは [Chat completions](https://kiln.bricksum.com/docs/ja/api-reference/chat-completions)です。 モデル ID は API が現在提供しているものである必要があります。一覧の取得方法と、目的の ID が一覧にない場合の対処は [モデル](https://kiln.bricksum.com/docs/ja/models) のページにあります。 SDK に関係なくこのモデルが対応していない機能は [OpenAI からの移行](https://kiln.bricksum.com/docs/ja/migrating-from-openai) のページにまとめています。 メモ このページのスニペットは 2026-09-21 に pydantic-ai 2.46.0 の環境で Kiln API に対して実行し、動作を確認しています。 未確認の項目: その実行は gpt-oss-120b で行いました。ページは現在 qwen3-32b を使っており、このモデルではまだ再実行していません。上のエージェントの実行は確認しています。型付きの出力、ツール、ストリーミングは Kiln では確認していません。