ツールリスト
コンテンツ詳細
代替品
インストール
🚀 Praison AI
PraisonAIは、自己反射機能を備えた本番環境対応のマルチAIエージェントフレームワークです。簡単なタスクから複雑な課題まで、様々な問題を自動化して解決するAIエージェントを作成することができます。PraisonAIエージェント、AG2(旧AutoGen)、CrewAIを低コードソリューションに統合することで、マルチエージェントLLMシステムの構築と管理を合理化し、シンプルさ、カスタマイズ性、および効果的な人間とエージェントの協力を強調します。
🚀 クイックスタート
PraisonAIを1分以内で始めることができます。
# インストール
pip install praisonaiagents
# APIキーを設定
export OPENAI_API_KEY=your_key_here
# シンプルなエージェントを作成
python -c "from praisonaiagents import Agent; Agent(instructions='You are a helpful AI assistant').start('Write a haiku about AI')"
✨ 主な機能
コアエージェント
| 機能 | コード | ドキュメント |
|---|---|---|
| シングルエージェント | Example | 📖 |
| マルチエージェント | Example | 📖 |
| オートエージェント | Example | 📖 |
| 自己反射AIエージェント | Example | 📖 |
| 推論AIエージェント | Example | 📖 |
| マルチモーダルAIエージェント | Example | 📖 |
ワークフロー
| 機能 | コード | ドキュメント |
|---|---|---|
| シンプルなワークフロー | Example | 📖 |
| エージェントを使用したワークフロー | Example | 📖 |
エージェントルーティング (route()) |
Example | 📖 |
並列実行 (parallel()) |
Example | 📖 |
リスト/CSVのループ (loop()) |
Example | 📖 |
評価器-最適化器 (repeat()) |
Example | 📖 |
| 条件付きステップ | Example | 📖 |
| ワークフロー分岐 | Example | 📖 |
| ワークフロー早期終了 | Example | 📖 |
| ワークフローチェックポイント | Example | 📖 |
コードと開発
| 機能 | コード | ドキュメント |
|---|---|---|
| コードインタープリターエージェント | Example | 📖 |
| AIコード編集ツール | Example | 📖 |
| 外部エージェント (すべて) | Example | 📖 |
| ClaudeコードCLI | Example | 📖 |
| Gemini CLI | Example | 📖 |
| Codex CLI | Example | 📖 |
| Cursor CLI | Example | 📖 |
メモリと知識
| 機能 | コード | ドキュメント |
|---|---|---|
| メモリ (短期および長期) | Example | 📖 |
| ファイルベースのメモリ | Example | 📖 |
| Claudeメモリツール | Example | 📖 |
| カスタム知識の追加 | Example | 📖 |
| RAGエージェント | Example | 📖 |
| PDFとのチャットエージェント | Example | 📖 |
| データリーダー (PDF、DOCXなど) | CLI | 📖 |
| ベクトルストアの選択 | CLI | 📖 |
| 検索戦略 | CLI | 📖 |
| 再ランキング | CLI | 📖 |
| インデックスタイプ (ベクトル/キーワード/ハイブリッド) | CLI | 📖 |
| クエリエンジン (サブ質問など) | CLI | 📖 |
研究とインテリジェンス
| 機能 | コード | ドキュメント |
|---|---|---|
| ディープリサーチエージェント | Example | 📖 |
| クエリリライターエージェント | Example | 📖 |
| ネイティブウェブ検索 | Example | 📖 |
| 組み込み検索ツール | Example | 📖 |
| 統一ウェブ検索 | Example | 📖 |
| ウェブフェッチ (Anthropic) | Example | 📖 |
計画と実行
| 機能 | コード | ドキュメント |
|---|---|---|
| 計画モード | Example | 📖 |
| 計画ツール | Example | 📖 |
| 計画推論 | Example | 📖 |
| プロンプトチェーン | Example | 📖 |
| 評価器最適化器 | Example | 📖 |
| オーケストレータワーカー | Example | 📖 |
特殊エージェント
| 機能 | コード | ドキュメント |
|---|---|---|
| データアナリストエージェント | Example | 📖 |
| ファイナンスエージェント | Example | 📖 |
| ショッピングエージェント | Example | 📖 |
| レコメンデーションエージェント | Example | 📖 |
| ウィキペディアエージェント | Example | 📖 |
| プログラミングエージェント | Example | 📖 |
| 数学エージェント | Example | 📖 |
| Markdownエージェント | Example | 📖 |
| プロンプト拡張エージェント | Example | 📖 |
メディアとマルチモーダル
| 機能 | コード | ドキュメント |
|---|---|---|
| 画像生成エージェント | Example | 📖 |
| 画像からテキストへのエージェント | Example | 📖 |
| ビデオエージェント | Example | 📖 |
| カメラ統合 | Example | 📖 |
プロトコルと統合
| 機能 | コード | ドキュメント |
|---|---|---|
| MCPトランスポート | Example | 📖 |
| WebSocket MCP | Example | 📖 |
| MCPセキュリティ | Example | 📖 |
| MCP再開性 | Example | 📖 |
| MCP設定管理 | Example | 📖 |
| LangChain統合エージェント | Example | 📖 |
安全性と制御
| 機能 | コード | ドキュメント |
|---|---|---|
| ガードレール | Example | 📖 |
| 人間の承認 | Example | 📖 |
| ルールと指示 | Example | 📖 |
高度な機能
| 機能 | コード | ドキュメント |
|---|---|---|
| 非同期と並列処理 | Example | 📖 |
| 並列化 | Example | 📖 |
| 反復エージェント | Example | 📖 |
| エージェントハンドオフ | Example | 📖 |
| ステートフルエージェント | Example | 📖 |
| 自律的ワークフロー | Example | 📖 |
| 構造化出力エージェント | Example | 📖 |
| モデルルーター | Example | 📖 |
| プロンプトキャッシュ | Example | 📖 |
| 高速コンテキスト | Example | 📖 |
ツールと設定
| 機能 | コード | ドキュメント |
|---|---|---|
| 100以上のカスタムツール | Example | 📖 |
| YAML設定 | Example | 📖 |
| 100以上のLLMサポート | Example | 📖 |
| コールバックエージェント | Example | 📖 |
| フック | Example | 📖 |
| ミドルウェアシステム | Example | 📖 |
| 設定可能なモデル | Example | 📖 |
| レートリミッター | Example | 📖 |
| 注入されたツール状態 | Example | 📖 |
| シャドウGitチェックポイント | Example | 📖 |
| バックグラウンドタスク | Example | 📖 |
| ポリシーエンジン | Example | 📖 |
| 思考予算 | Example | 📖 |
| 出力スタイル | Example | 📖 |
| コンテキスト圧縮 | Example | 📖 |
モニタリングと管理
| 機能 | コード | ドキュメント |
|---|---|---|
| セッション管理 | Example | 📖 |
| 自動保存セッション | Example | 📖 |
| コンテキスト内の履歴 | Example | 📖 |
| テレメトリー | Example | 📖 |
| プロジェクトドキュメント (.praison/docs/) | Example | 📖 |
| AIコミットメッセージ | Example | 📖 |
| プロンプト内の@メンション | Example | 📖 |
CLI機能
| 機能 | コード | ドキュメント |
|---|---|---|
| スラッシュコマンド | Example | 📖 |
| 自律モード | Example | 📖 |
| コスト追跡 | Example | 📖 |
| リポジトリマップ | Example | 📖 |
| インタラクティブTUI | Example | 📖 |
| Git統合 | Example | 📖 |
| サンドボックス実行 | Example | 📖 |
| CLI比較 | Example | 📖 |
| プロファイル/ベンチマーク | Example | 📖 |
| オートモード | Example | 📖 |
| 初期化 | Example | 📖 |
| ファイル入力 | Example | 📖 |
| 最終エージェント | Example | 📖 |
| 最大トークン数 | Example | 📖 |
評価
| 機能 | コード | ドキュメント |
|---|---|---|
| 精度評価 | Example | 📖 |
| パフォーマンス評価 | Example | 📖 |
| 信頼性評価 | Example | 📖 |
| 基準評価 | Example | 📖 |
エージェントスキル
| 機能 | コード | ドキュメント |
|---|---|---|
| スキル管理 | Example | 📖 |
| カスタムスキル | Example | 📖 |
24/7スケジューリング
| 機能 | コード | ドキュメント |
|---|---|---|
| エージェントスケジューラー | Example | 📖 |
📦 インストール
Python SDK
コーディングに特化した軽量パッケージです。
pip install praisonaiagents
CLIサポート付きのフルフレームワークをインストールするには:
pip install praisonai
JavaScript SDK
npm install praisonai
環境変数
| 変数 | 必須 | 説明 |
|---|---|---|
OPENAI_API_KEY |
はい* | OpenAI APIキー |
ANTHROPIC_API_KEY |
いいえ | Anthropic Claude APIキー |
GOOGLE_API_KEY |
いいえ | Google Gemini APIキー |
GROQ_API_KEY |
いいえ | Groq APIキー |
OPENAI_BASE_URL |
いいえ | カスタムAPIエンドポイント (Ollama、Groqなど) |
*少なくとも1つのLLMプロバイダーのAPIキーが必要です。
# APIキーを設定
export OPENAI_API_KEY=your_key_here
# Ollama (ローカルモデル) の場合
export OPENAI_BASE_URL=http://localhost:11434/v1
# Groqの場合
export OPENAI_API_KEY=your_groq_key
export OPENAI_BASE_URL=https://api.groq.com/openai/v1
💻 使用例
Pythonコードの使用例
1. シングルエージェント
app.pyファイルを作成し、以下のコードを追加します。
from praisonaiagents import Agent
agent = Agent(instructions="Your are a helpful AI assistant")
agent.start("Write a movie script about a robot in Mars")
実行:
python app.py
2. マルチエージェント
app.pyファイルを作成し、以下のコードを追加します。
from praisonaiagents import Agent, PraisonAIAgents
research_agent = Agent(instructions="Research about AI")
summarise_agent = Agent(instructions="Summarise research agent's findings")
agents = PraisonAIAgents(agents=[research_agent, summarise_agent])
agents.start()
実行:
python app.py
3. 計画モードのエージェント
任意のエージェントに計画を有効にすると、エージェントは計画を作成し、それをステップごとに実行します。
from praisonaiagents import Agent
def search_web(query: str) -> str:
return f"Search results for: {query}"
agent = Agent(
name="AI Assistant",
instructions="Research and write about topics",
planning=True, # 計画モードを有効にする
planning_tools=[search_web], # 計画調査用のツール
planning_reasoning=True # 思考連鎖推論
)
result = agent.start("Research AI trends in 2025 and write a summary")
起こること:
- 📋 エージェントが多段階の計画を作成する
- 🚀 各ステップを順次実行する
- 📊 コンテキストの受け渡しで進捗を表示する
- ✅ 最終結果を返す
4. ディープリサーチエージェント
OpenAIまたはGeminiのディープリサーチAPIを使用したリアルタイムストリーミング、ウェブ検索、および引用付きの自動化された調査。
from praisonaiagents import DeepResearchAgent
# OpenAIディープリサーチ
agent = DeepResearchAgent(
model="o4-mini-deep-research", # または "o3-deep-research"
verbose=True
)
result = agent.research("What are the latest AI trends in 2025?")
print(result.report)
print(f"Citations: {len(result.citations)}")
# Geminiディープリサーチ
from praisonaiagents import DeepResearchAgent
agent = DeepResearchAgent(
model="deep-research-pro", # 自動検出されるGemini
verbose=True
)
result = agent.research("Research quantum computing advances")
print(result.report)
機能:
- 🔍 複数のプロバイダーサポート (OpenAI、Gemini、LiteLLM)
- 📡 推論サマリー付きのリアルタイムストリーミング
- 📚 URL付きの構造化引用
- 🛠️ 組み込みツール:ウェブ検索、コードインタープリター、MCP、ファイル検索
- 🔄 モデル名からの自動プロバイダー検出
5. クエリリライターエージェント
複数の戦略を使用してユーザークエリを変換し、RAG検索品質を向上させます。
from praisonaiagents import QueryRewriterAgent, RewriteStrategy
agent = QueryRewriterAgent(model="gpt-4o-mini")
# 基本 - 略語を展開し、コンテキストを追加する
result = agent.rewrite("AI trends")
print(result.primary_query) # "What are the current trends in Artificial Intelligence?"
# HyDE - セマンティックマッチング用の仮想ドキュメントを生成する
result = agent.rewrite("What is quantum computing?", strategy=RewriteStrategy.HYDE)
# ステップバック - より広いコンテキストの質問を生成する
result = agent.rewrite("GPT-4 vs Claude 3?", strategy=RewriteStrategy.STEP_BACK)
# サブクエリ - 複雑な質問を分解する
result = agent.rewrite("RAG setup and best embedding models?", strategy=RewriteStrategy.SUB_QUERIES)
# コンテキスト - チャット履歴を使用して参照を解決する
result = agent.rewrite("What about cost?", chat_history=[...])
戦略:
- BASIC:略語を展開し、タイポを修正し、コンテキストを追加する
- HYDE:セマンティックマッチング用の仮想ドキュメントを生成する
- STEP_BACK:より高レベルの概念の質問を生成する
- SUB_QUERIES:複数部分の質問を分解する
- MULTI_QUERY:複数の言い換えバージョンを生成する
- CONTEXTUAL:会話履歴を使用して参照を解決する
- AUTO:最適な戦略を自動検出する
6. エージェントメモリ (依存関係なし)
エージェントに永続的なメモリを有効にする - 追加のパッケージなしでそのまま動作します。
from praisonaiagents import Agent
from praisonaiagents.memory import FileMemory
# 単一のパラメータでメモリを有効にする
agent = Agent(
name="Personal Assistant",
instructions="You are a helpful assistant that remembers user preferences.",
memory=True, # ファイルベースのメモリを有効にする (追加の依存関係なし!)
user_id="user123" # ユーザーごとにメモリを分離する
)
# メモリは会話に自動的に注入される
result = agent.start("My name is John and I prefer Python")
# エージェントは将来の会話でこれを覚える
メモリの種類:
- 短期:最近のコンテキストのローリングバッファ (自動期限切れ)
- 長期:重要な事実を永続的に保存する (重要度でソート)
- エンティティ:属性付きの人物、場所、組織
- エピソード:日付ベースの対話履歴
高度な機能:
from praisonaiagents.memory import FileMemory
memory = FileMemory(user_id="user123")
# セッションの保存/再開
memory.save_session("project_session", conversation_history=[...])
memory.resume_session("project_session")
# コンテキスト圧縮
memory.compress(llm_func=lambda p: agent.chat(p), max_items=10)
# チェックポイントの作成
memory.create_checkpoint("before_refactor", include_files=["main.py"])
memory.restore_checkpoint("before_refactor", restore_files=True)
# スラッシュコマンド
memory.handle_command("/memory show")
memory.handle_command("/memory save my_session")
ストレージオプション:
| オプション | 依存関係 | 説明 |
|---|---|---|
memory=True |
なし | ファイルベースのJSONストレージ (デフォルト) |
memory="file" |
なし | 明示的なファイルベースのストレージ |
memory="sqlite" |
組み込み | インデックス付きのSQLite |
memory="chromadb" |
chromadb | ベクトル/セマンティック検索 |
7. ルールと指示
PraisonAIは、プロジェクトルートとgitルートから指示ファイルを自動検出します。
| ファイル | 説明 | 優先度 |
|---|---|---|
PRAISON.md |
PraisonAIネイティブの指示 | 高 |
PRAISON.local.md |
ローカルオーバーライド (gitignored) | より高 |
CLAUDE.md |
Claude Codeメモリファイル | 高 |
CLAUDE.local.md |
ローカルオーバーライド (gitignored) | より高 |
AGENTS.md |
OpenAI Codex CLI指示 | 高 |
GEMINI.md |
Gemini CLIメモリファイル | 高 |
.cursorrules |
Cursor IDEルール | 高 |
.windsurfrules |
Windsurf IDEルール | 高 |
.claude/rules/*.md |
Claude Codeモジュールルール | 中 |
.windsurf/rules/*.md |
Windsurfモジュールルール | 中 |
.cursor/rules/*.mdc |
Cursorモジュールルール | 中 |
.praison/rules/*.md |
ワークスペースルール | 中 |
~/.praison/rules/*.md |
グローバルルール | 低 |
from praisonaiagents import Agent
# エージェントはCLAUDE.md、AGENTS.md、GEMINI.mdなどを自動検出する
agent = Agent(name="Assistant", instructions="You are helpful.")
# ルールは自動的にシステムプロンプトに注入される
@Import構文:
# CLAUDE.md
See @README for project overview
See @docs/architecture.md for system design
@~/.praison/my-preferences.md
ルールファイルの形式 (YAMLフロントマター付き):
---
description: Python coding guidelines
globs: ["**/*.py"]
activation: always # always, glob, manual, ai_decision
---
# Guidelines
- Use type hints
- Follow PEP 8
8. 自動生成メモリ
from praisonaiagents.memory import FileMemory, AutoMemory
memory = FileMemory(user_id="user123")
auto = AutoMemory(memory, enabled=True)
# 会話から自動的にメモリを抽出して保存する
memories = auto.process_interaction(
"My name is John and I prefer Python for backend work"
)
# 抽出:name="John", preference="Python for backend"
9. エージェントワークフロー
Workflowクラスを使用して強力なマルチエージェントワークフローを作成します。
from praisonaiagents import Agent, Workflow
# エージェントを作成
researcher = Agent(
name="Researcher",
role="Research Analyst",
goal="Research topics thoroughly",
instructions="Provide concise, factual information."
)
writer = Agent(
name="Writer",
role="Content Writer",
goal="Write engaging content",
instructions="Write clear, engaging content based on research."
)
# エージェントをステップとして持つワークフローを作成
workflow = Workflow(steps=[researcher, writer])
# ワークフローを実行 - エージェントが順次処理する
result = workflow.start("What are the benefits of AI agents?")
print(result["output"])
主要な機能:
- エージェント優先 -
Agentオブジェクトを直接ワークフローステップとして渡す - パターンヘルパー -
route()、parallel()、loop()、repeat()を使用する - 計画モード -
planning=Trueで有効にする - コールバック -
on_step_complete、on_workflow_completeで監視する - 非同期実行 -
workflow.astart()で非同期に実行する
ワークフローパターン (route、parallel、loop、repeat)
from praisonaiagents import Agent, Workflow
from praisonaiagents.workflows import route, parallel, loop, repeat
# 1. ルーティング - 分類器エージェントが専門エージェントにルーティングする
classifier = Agent(name="Classifier", instructions="Respond with 'technical' or 'creative'")
tech_agent = Agent(name="TechExpert", role="Technical Expert")
creative_agent = Agent(name="Creative", role="Creative Writer")
workflow = Workflow(steps=[
classifier,
route({
"technical": [tech_agent],
"creative": [creative_agent]
})
])
# 2. 並列 - 複数のエージェントが同時に作業する
market_agent = Agent(name="Market", role="Market Researcher")
competitor_agent = Agent(name="Competitor", role="Competitor Analyst")
aggregator = Agent(name="Aggregator", role="Synthesizer")
workflow = Workflow(steps=[
parallel([market_agent, competitor_agent]),
aggregator
])
# 3. ループ - エージェントが各アイテムを処理する
processor = Agent(name="Processor", role="Item Processor")
summarizer = Agent(name="Summarizer", role="Summarizer")
workflow = Workflow(
steps=[loop(processor, over="items"), summarizer],
variables={"items": ["AI", "ML", "NLP"]}
)
# 4. 繰り返し - 評価器-最適化器パターン
generator = Agent(name="Generator", role="Content Generator")
evaluator = Agent(name="Evaluator", instructions="Say 'APPROVED' if good")
workflow = Workflow(steps=[
generator,
repeat(evaluator, until=lambda ctx: "approved" in ctx.previous_result.lower(), max_iterations=3)
])
# 5. コールバック
workflow = Workflow(
steps=[researcher, writer],
on_step_complete=lambda name, r: print(f"✅ {name} done")
)
# 6. 計画と推論付き
workflow = Workflow(
steps=[researcher, writer],
planning=True,
reasoning=True
)
# 7. 非同期実行
result = asyncio.run(workflow.astart("input"))
# 8. ステータス追跡
workflow.status # "not_started" | "running" | "completed"
workflow.step_statuses # {"step1": "completed", "step2": "skipped"}
YAMLワークフローテンプレート
# .praison/workflows/research.yaml
name: Research Workflow
description: Research and write content with all patterns
agents:
researcher:
role: Research Expert
goal: Find accurate information
tools: [tavily_search, web_scraper]
writer:
role: Content Writer
goal: Write engaging content
editor:
role: Editor
goal: Polish content
steps:
# シーケンシャル
- agent: researcher
action: Research {{topic}}
output_variable: research_data
# ルーティング
- name: classifier
action: Classify content type
route:
technical: [tech_handler]
creative: [creative_handler]
default: [general_handler]
# 並列
- name: parallel_research
parallel:
- agent: researcher
action: Research market
- agent: researcher
action: Research competitors
# ループ
- agent: writer
action: Write about {{item}}
loop_over: topics
loop_var: item
# 繰り返し (評価器-最適化器)
- agent: editor
action: Review and improve
repeat:
until: "quality > 8"
max_iterations: 3
# ファイルへの出力
- agent: writer
action: Write final report
output_file: output/{{topic}}_report.md
variables:
topic: AI trends
topics: [ML, NLP, Vision]
workflow:
planning: true
planning_llm: gpt-4o
memory_config:
provider: chroma
persist: true
YAMLワークフローの読み込み
from praisonaiagents.workflows import YAMLWorkflowParser, WorkflowManager
# オプション1: YAML文字列を解析する
parser = YAMLWorkflowParser()
workflow = parser.parse_string(yaml_content)
result = workflow.start("Research AI trends")
# オプション2: WorkflowManagerでファイルから読み込む
manager = WorkflowManager()
workflow = manager.load_yaml("research_workflow.yaml")
result = workflow.start("Research AI trends")
# オプション3: YAMLを直接実行する
result = manager.execute_yaml(
"research_workflow.yaml",
input_data="Research AI trends",
variables={"topic": "Machine Learning"}
)
完全なworkflow.yamlのリファレンス
# workflow.yaml - 全機能リファレンス
name: Complete Workflow
description: Demonstrates all workflow.yaml features
framework: praisonai # praisonai, crewai, autogen
process: workflow # sequential, hierarchical, workflow
workflow:
planning: true
planning_llm: gpt-4o
reasoning: true
verbose: true
memory_config:
provider: chroma
persist: true
variables:
topic: AI trends
items: [ML, NLP, Vision]
agents:
researcher:
name: Researcher
role: Research Analyst
goal: Research topics thoroughly
instructions: "Provide detailed research findings"
backstory: "Expert researcher with 10 years experience" # instructionsのエイリアス
llm: gpt-4o-mini
function_calling_llm: gpt-4o # ツール呼び出し用
max_rpm: 10 # レート制限
max_execution_time: 300 # タイムアウト (秒)
reflect_llm: gpt-4o # 自己反射用
min_reflect: 1
max_reflect: 3
system_template: "You are a helpful assistant"
tools:
- tavily_search
writer:
name: Writer
role: Content Writer
goal: Write clear content
instructions: "Write engaging content"
steps:
- name: research_step
agent: researcher
action: "Research {{topic}}"
expected_output: "Comprehensive research report"
output_file: "output/research.md"
create_directory: true
- name: writing_step
agent: writer
action: "Write article based on research"
context: # タスク依存関係
- research_step
output_json: # 構造化出力
type: object
properties:
title: { type: string }
content: { type: string }
callbacks:
on_workflow_start: log_start
on_step_complete: log_step
on_workflow_complete: log_complete
10. フック
エージェントの動作をさまざまなライフサイクルポイントでインターセプトして変更します。
from praisonaiagents.hooks import (
HookRegistry, HookRunner, HookEvent, HookResult,
BeforeToolInput
)
# フックレジストリを作成
registry = HookRegistry()
# すべてのツール呼び出しをログに記録する
@registry.on(HookEvent.BEFORE_TOOL)
def log_tools(event_data: BeforeToolInput) -> HookResult:
print(f"Tool: {event_data.tool_name}")
return HookResult.allow()
# 危険な操作をブロックする
@registry.on(HookEvent.BEFORE_TOOL)
def security_check(event_data: BeforeToolInput) -> HookResult:
if "delete" in event_data.tool_name.lower():
return HookResult.deny("Delete operations blocked")
return HookResult.allow()
# フックを実行
runner = HookRunner(registry)
CLIコマンド:
praisonai hooks list # 登録されたフックをリストする
praisonai hooks test before_tool # イベントのフックをテストする
praisonai hooks run "echo test" # コマンドフックを実行する
praisonai hooks validate hooks.json # 設定を検証する
11. シャドウGitチェックポイント
シャドウGitを使用したファイルレベルの元に戻し/復元。
from praisonaiagents.checkpoints import CheckpointService
service = CheckpointService(workspace_dir="./my_project")
await service.initialize()
# 変更前にチェックポイントを保存
result = await service.save("Before refactoring")
# 変更を加える...
# 必要に応じて復元
await service.restore(result.checkpoint.id)
# 差分を表示
diff = await service.diff()
CLIコマンド:
praisonai checkpoint save "Before changes" # チェックポイントを保存する
praisonai checkpoint list # チェックポイントをリストする
praisonai checkpoint diff # 変更を表示する
praisonai checkpoint restore abc123 # チェックポイントに復元する
リンク:
- 📖 コーディングドキュメント
- 📖 CLIドキュメント
- 💻 サンプル
12. バックグラウンドタスク
エージェントタスクを非同期で実行し、ブロックしません。
import asyncio
from praisonaiagents.background import BackgroundRunner, BackgroundConfig
async def main():
config = BackgroundConfig(max_concurrent_tasks=3)
runner = BackgroundRunner(config=config)
async def my_task(name: str) -> str:
await asyncio.sleep(2)
return f"Task {name} completed"
task = await runner.submit(my_task, args=("example",), name="my_task")
await task.wait(timeout=10.0)
print(task.result)
asyncio.run(main())
CLIコマンド:
praisonai background list # 実行中のタスクをリストする
praisonai background status <id> # タスクのステータスを確認する
praisonai background cancel <id> # タスクをキャンセルする
praisonai background clear # 完了したタスクをクリアする
リンク:
- 📖 コーディングドキュメント
- 📖 CLIドキュメント
- 💻 サンプル
13. ポリシーエンジン
ポリシーベースの実行でエージェントができることとできないことを制御します。
from praisonaiagents.policy import (
PolicyEngine, Policy, PolicyRule, PolicyAction
)
engine = PolicyEngine()
policy = Policy(
name="no_delete",
rules=[
PolicyRule(
action=PolicyAction.DENY,
resource="tool:delete_*",
reason="Delete operations blocked"
)
]
)
engine.add_policy(policy)
result = engine.check("tool:delete_file", {})
print(f"Allowed: {result.allowed}")
CLIコマンド:
praisonai policy list # ポリシーをリストする
praisonai policy check "tool:name" # 許可されているかを確認する
praisonai policy init # テンプレートを作成する
リンク:
- 📖 コーディングドキュメント
- 📖 CLIドキュメント
- 💻 サンプル
14. 思考予算
拡張思考のためのトークン予算を設定します。
from praisonaiagents.thinking import ThinkingBudget, ThinkingTracker
# 事前定義のレベルを使用
budget = ThinkingBudget.high() # 16,000トークン
# 使用状況を追跡
tracker = ThinkingTracker()
session = tracker.start_session(budget_tokens=16000)
tracker.end_session(session, tokens_used=12000)
summary = tracker.get_summary()
print(f"Utilization: {summary['average_utilization']:.1%}")
CLIコマンド:
praisonai thinking status # 現在の予算を表示する
praisonai thinking set high # 予算レベルを設定する
praisonai thinking stats # 使用統計を表示する
リンク:
- 📖 コーディングドキュメント
- 📖 CLIドキュメント
- 💻 サンプル
15. 出力スタイル
エージェントが応答をフォーマットする方法を設定します。
from praisonaiagents.output import OutputStyle, OutputFormatter
# プリセットスタイルを使用
style = OutputStyle.concise()
formatter = OutputFormatter(style)
# 出力をフォーマット
text = "# Hello\n\nThis is **bold** text."
plain = formatter.format(text)
print(plain)
CLIコマンド:
praisonai output status # 現在のスタイルを表示する
praisonai output set concise # 出力スタイルを設定する
リンク:
- 📖 コーディングドキュメント
- 📖 CLIドキュメント
- 💻 サンプル
16. コンテキスト圧縮
コンテキストウィンドウサイズを自動的に管理します。
from praisonaiagents.compaction import (
ContextCompactor, CompactionStrategy
)
compactor = ContextCompactor(
max_tokens=4000,
strategy=CompactionStrategy.SLIDING,
preserve_recent=3
)
messages = [...] # あなたの会話履歴
compacted, result = compactor.compact(messages)
print(f"Compression: {result.compression_ratio:.1%}")
CLIコマンド:
praisonai compaction status # 設定を表示する
praisonai compaction set sliding # 戦略を設定する
praisonai compaction stats # 統計を表示する
リンク:
- 📖 コーディングドキュメント
- 📖 CLIドキュメント
- 💻 サンプル
17. フィールド名の参照 (A-I-G-S)
PraisonAIは、古い (agents.yaml) と新しい (workflow.yaml) の両方のフィールド名を受け入れます。新しいプロジェクトでは、正規名を使用してください。
| 正規 (推奨) | エイリアス (使用可能) | 目的 |
|---|---|---|
agents |
roles |
エージェントのペルソナを定義する |
instructions |
backstory |
エージェントの動作/ペルソナ |
action |
description |
ステップが行うこと |
steps |
tasks (ネストされた) |
作業項目を定義する |
name |
topic |
ワークフロー識別子 |
A-I-G-Sニーモニック - 覚えやすい:
- Agents - 誰が作業を行うか
- Instructions - 彼らがどのように振る舞うか
- Goal - 彼らが達成すること
- Steps - 彼らが行うこと
# クイックリファレンス - 正規形式
name: My Workflow # ワークフロー名 (topicではない)
agents: # エージェントを定義する (rolesではない)
my_agent:
role: Job Title # エージェントの役割
goal: What to achieve # エージェントの目標
instructions: How to act # エージェントの動作 (backstoryではない)
steps: # ステップを定義する (tasksではない)
- agent: my_agent
action: What to do # ステップのアクション (descriptionではない)
注意: パーサーは古い名前と新しい名前の両方を受け入れます。
praisonai workflow validate <file.yaml>を実行して、正規名の提案を確認してください。
18. ワークフローパターンを持つ拡張agents.yaml
機能同等性: agents.yamlとworkflow.yamlの両方が同じ機能をサポートするようになりました。
- すべてのワークフローパターン (route、parallel、loop、repeat)
- すべてのエージェントフィールド (function_calling_llm、max_rpm、max_execution_time、reflect_llm、templates)
- すべてのステップフィールド (expected_output、context、output_json、create_directory、callback)
- フレームワークサポート (praisonai、crewai、autogen)
- プロセスタイプ (sequential、hierarchical、workflow)
process: workflowを設定することで、agents.yamlで直接高度なワークフローパターンを使用することができます。
# ワークフローパターンを持つagents.yaml
framework: praisonai
process: workflow # ワークフローモードを
代替品








