Pi Agent: First Chat
最終更新:2026-08-31
--- title: "初めてのチャット" description: "Pi Agentで最初のメッセージを送信し、インタラクティブな会話フロー、メッセージ形式、レスポンス処理を理解します。" order: 4 lang: ja
Hello Worldは新しいツールのいつもの第一歩。このレッスンでPi Agentを実際に「喋らせる」。
1. CLIクイックチャット
インストール後の最もシンプルな方法はコマンドラインチャットです:
BASH
pi-agent chat "Hello, please introduce yourself"
出力:
TEXT
📖 参照専用
Pi Agent v0.8.0
Provider: deepseek (deepseek-chat)
Hello! I'm Pi Agent, a lightweight AI agent framework. I can help you
answer questions, call tools, and execute tasks. Chatting with me is
like talking to an AI partner that can take action!
(1) プロバイダーの指定
BASH
pi-agent chat --provider openai --model gpt-4o "Explain quantum entanglement"
(2) スキルの指定
BASH
pi-agent chat --skill code_review "Review this Python code"
2. Pythonコードでのチャット
より柔軟な方法はPython APIを使うことです:
(1) 最もシンプルなチャット
PYTHON
from pi_agent import Agent
agent = Agent(name="hello")
response = agent.chat("Hello, Pi Agent!")
print(response)
(2) マルチターン会話
PYTHON
from pi_agent import Agent
agent = Agent(name="tutor", system_prompt="You are a Python programming tutor")
r1 = agent.chat("What are list comprehensions?")
print(r1)
r2 = agent.chat("Give me a practical example")
print(r2)
r3 = agent.chat("What are the advantages over for loops?")
print(r3)
(3) 構造化レスポンス
PYTHON
from pi_agent import Agent
agent = Agent(name="structured")
response = agent.chat(
"List 5 programming languages with their names and invention years",
response_format="json"
)
print(type(response)) # <class 'dict'>
3. メッセージ形式
Pi Agentは内部的に標準メッセージ形式を使用します:
PYTHON
messages = [
{"role": "system", "content": "You are a coding assistant"},
{"role": "user", "content": "What are decorators?"},
{"role": "assistant", "content": "Decorators are..."},
{"role": "user", "content": "Can you give an example?"}
]
| ロール | 説明 |
|---|---|
| system | システムプロンプト、Agentの動作を定義 |
| user | ユーザー入力 |
| assistant | Agentのレスポンス |
| tool | ツール呼び出しの結果 |
4. システムプロンプト
システムプロンプトはAgentの「ペルソナ」と行動の境界を定義します:
例1:異なるAgentロール(難易度:⭐)
PYTHON
from pi_agent import Agent
coder = Agent(
name="coder",
system_prompt="You are a Python expert. Respond concisely with code and key explanations only"
)
teacher = Agent(
name="teacher",
system_prompt="You are a patient programming teacher. Explain concepts with analogies and step-by-step breakdowns"
)
q = "What are generators?"
print("=== Coder ===")
print(coder.chat(q))
print("=== Teacher ===")
print(teacher.chat(q))
5. ストリーミング出力
長いレスポンスの場合、ストリーミングでリアルタイムに結果を確認できます:
PYTHON
from pi_agent import Agent
agent = Agent(name="stream")
for chunk in agent.chat_stream("Write a poem about programming"):
print(chunk, end="", flush=True)
Aliceはモードを比較しました:「ストリーミングの方がずっといい——空っぽの画面をじっと待つ必要がない。」
6. レスポンスオブジェクトの詳細
chat()メソッドはテキスト以上のものを返します:
PYTHON
from pi_agent import Agent
agent = Agent(name="meta")
response = agent.chat("1+1=?")
print(response.text) # "2"
print(response.model) # "deepseek-chat"
print(response.usage) # {"prompt_tokens": 12, "completion_tokens": 3}
print(response.tool_calls) # [] (ツールが呼び出された場合は記録)
print(response.finish_reason) # "stop"
❓ よくある質問
Q chat()かchat_stream()か?
A 短いQ&Aにはchat()、長いテキスト生成にはchat_stream()を使いましょう。ストリーミングは結果に影響せず、ユーザー体験のみに影響します。
Q マルチターンのコンテキストは無限に増える?
A いいえ。Pi Agentはコンテキストウィンドウを自動管理し、制限を超えると最も古いメッセージを切り詰めます。Agent作成時にcontext_windowを設定してください。
Q Agentにツールを強制的に使わせるには?
A tool_choice="required"を設定するか、メッセージで明示的に「Please use the search tool to find...」と指示してください。
📖 まとめ
- CLI:
pi-agent chatでクイックチャット;Python:Agent.chat()でプログラム的利用 - マルチターン会話、構造化レスポンス、ストリーミング出力をサポート
- システムプロンプトがAgentのペルソナを定義;メッセージはrole/content標準に従う
- レスポンスオブジェクトにはテキスト、モデル情報、トークン使用量などのメタデータが含まれる
📝 練習問題
- 基礎(難易度:⭐): CLIとPythonの両方でメッセージを送信し、体験を比較してください。
- 中級(難易度:⭐⭐): 異なるsystem_promptを持つ2つのAgentを作成し、同じ質問に異なるスタイルで答えを得てください。
- 上級(難易度:⭐⭐⭐): ストリーミング出力を使って「リアルタイムタイプライター」効果を実装してください。