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...」と指示してください。

📖 まとめ


📝 練習問題

  1. 基礎(難易度:⭐): CLIとPythonの両方でメッセージを送信し、体験を比較してください。
  2. 中級(難易度:⭐⭐): 異なるsystem_promptを持つ2つのAgentを作成し、同じ質問に異なるスタイルで答えを得てください。
  3. 上級(難易度:⭐⭐⭐): ストリーミング出力を使って「リアルタイムタイプライター」効果を実装してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%