Praison AI: 次世代のAI Agent開発フレームワーク

## はじめに
AI技術の急速な進歩に伴い、複数のAIエージェントを組み合わせて複雑なタスクを解決する「マルチエージェントシステム」が注目を集めています。本記事では、そのような次世代のAI Agent開発を簡単に行えるフレームワーク「Praison AI」について紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/0b529f55-e08f-ae64-844a-bb44227c7a98.png)

## Praison AIとは

Praison AIは、AutoGenやCrewAIなどのエージェントフレームワークを活用した、ローコードで集中型のフレームワークです。様々なLLM（大規模言語モデル）アプリケーションのためのマルチエージェントシステムの作成とオーケストレーションを簡素化することを目的としています。

特徴：
- 使いやすさ
- カスタマイズ性
- 人間とエージェントの対話重視

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/047c8c62-d4d7-1688-7221-c2e1bb277240.png)

## AI Agentの基本概念

AI Agentとは、特定のタスクや目標を達成するために設計された自律的なAIシステムです。マルチエージェントシステムでは、複数のAI Agentが協力して作業を行います。各エージェントは特定の役割や専門知識を持ち、他のエージェントと情報を共有しながら複雑な問題を解決します。

Praison AIは、このようなAI Agentの作成と管理を容易にするフレームワークです。

## Praison AIの主要機能

1. **自動化されたAIエージェント作成**: CrewAIやAutoGenフレームワークを使用
2. **100以上のLLMサポート**: 様々な言語モデルを利用可能
3. **コードベース全体とのチャット機能**: プロジェクト全体のコードを理解し対話
4. **インタラクティブなUI**: 使いやすいインターフェース
5. **YAML形式の設定**: 簡単にエージェントを定義
6. **カスタムツール統合**: 独自のツールを追加可能

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/6fe7a7f5-fa63-94f9-909a-05a8c5e4262c.png)

## Praison AIの使い方

### インストール

```bash
!pip install praisonai
```

### 初期化

```bash
import os
from google.colab import userdata
os.environ['OPENAI_API_KEY'] = userdata.get('OPENAI_API_KEY')
!praisonai --init create a movie script about dog in moon
```

これにより、現在のディレクトリに`agents.yaml`ファイルが自動生成されます。

### 実行

```bash
!praisonai
```

または

```bash
!python -m praisonai
```

### 完全自動モード

```bash
!praisonai --auto "犬が月に行く映画の脚本を作成"
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/2054b540-711d-4b70-f7c7-fa8840e253d8.png)

Google Colabで実行したときの出力の例

### ユーザーインターフェース

Praison AIは以下のインターフェースを提供しています：

1. UI（マルチエージェント）
2. Chat（単一AIエージェントとのチャット）
3. Code（コードベース全体とのチャット）

UIを使用する場合：

```bash
pip install -U "praisonai[ui]"
export OPENAI_API_KEY="あなたのAPIキー"
chainlit create-secret
export CHAINLIT_AUTH_SECRET=xxxxxxxx
praisonai ui
```

## カスタムツールとエージェントプレイブック

### カスタムツールの作成

Praison AIでは、独自のツールを作成して統合することができます。詳細は[公式ドキュメント](https://docs.praison.ai/tools/custom/)を参照してください。

### エージェントプレイブック

エージェントの役割や動作を定義するYAMLファイルを「プレイブック」と呼びます。以下は簡単な例です：

```yaml
framework: crewai
topic: 犬が月に行く映画の脚本を作成
roles:
  screenwriter:
    backstory: "AIに関する台本を魅力的な対話で作成するスキルを持つ。"
    goal: "{topic}の脚本を作成する。"
    role: 脚本家
    tasks:
      scriptwriting_task:
        description: "AIに関する魅力的なキャラクターと対話を含む脚本を開発する。"
        expected_output: "制作準備が整った完全な脚本。"

```

| 項目 | 値 |
|------|-----|
| フレームワーク | crewai |
| トピック | 犬が月に行く映画の脚本を作成 |
| 役割 | 脚本家 |
| バックストーリー | AIに関する台本を魅力的な対話で作成するスキルを持つ。 |
| 目標 | {topic}の脚本を作成する。 |
| タスク名 | scriptwriting_task |
| タスク説明 | AIに関する魅力的なキャラクターと対話を含む脚本を開発する。 |
| 期待される出力 | 制作準備が整った完全な脚本。 |

### 設定を変更して実行しているコードの例

```python
import os
import yaml
from praisonai import PraisonAI
from google.colab import userdata

# Example agent_yaml content
agent_yaml = """
framework: crewai
topic: 犬が月に行く映画の脚本を作成
roles:
  screenwriter:
    backstory: "AIに関する台本を魅力的な対話で作成するスキルを持つ。"
    goal: "{topic}の脚本を作成する。"
    role: 脚本家
    tasks:
      scriptwriting_task:
        description: "AIに関する魅力的なキャラクターと対話を含む脚本を開発する。"
        expected_output: "制作準備が整った完全な脚本。"
"""

# Create a PraisonAI instance with the agent_yaml content
praisonai = PraisonAI(agent_yaml=agent_yaml)

# Add OPENAI_API_KEY Secrets to Google Colab on the Left Hand Side 🔑 or Enter Manually Below
os.environ["OPENAI_API_KEY"] = userdata.get('OPENAI_API_KEY') or "ENTER OPENAI_API_KEY HERE"

# Run PraisonAI
result = praisonai.run()

# Print the result
print(result)
```
### Google Colabでの実行例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/8716ca91-0282-f7e0-1c67-6299700587a2.png)


## 出力結果

Entering new CrewAgentExecutor chain...
Thought: I now can give a great answer
Final Answer: my best complete final answer to the task.

**タイトル: 犬とAIの月への冒険**

**シーン 1: 地球 - 宇宙研究所**

*（室内、宇宙研究所のラボ。科学者たちが忙しく働いている。）*

**博士（Dr. Yamazaki）:** （興奮して）ついに完成だ！このAI、ルナは犬のアポロをサポートして月に行くために設計されたんだ。

**助手（Asuka）:** 本当に犬が月に行ける日が来るなんて、信じられません。ルナはどの程度のサポートができるんですか？

**ルナ（AI）:** こんにちは、アスカ。私はアポロの健康管理、ナビゲーション、通信などを全てサポートします。

**アポロ（犬）:** （尻尾を振りながら）ワン！

**博士（Dr. Yamazaki）:** さあ、アポロ、準備はいいかい？月への旅が君を待っているぞ。

**アポロ（犬）:** （自信満々に）ワン！

---

**シーン 2: 発射台**

*（発射台、ロケットが準備されている。アポロとルナはカプセル内に乗り込んでいる。）*

**ルナ（AI）:** 発射まであと10秒です。アポロ、緊張しないで。私がついています。

**アポロ（犬）:** （少し緊張しながら）ワン...

**管制官（Mission Control）:** 発射5秒前、4、3、2、1... 発射！

*（ロケットが発射し、空へと飛び立つ。）*

---

**シーン 3: 宇宙 - ロケット内部**

*（宇宙空間、アポロとルナが地球を見下ろしている。）*

**ルナ（AI）:** 見て、アポロ。あれが地球だよ。美しいね。

**アポロ（犬）:** （窓の外を見て、興味津々）ワン！

**ルナ（AI）:** 月までの旅は順調です。何か気になることがあったら教えてね。

**アポロ（犬）:** ワン！（しっぽを振る）

---

**シーン 4: 月面着陸**

*（月面、ロケットが静かに着陸する。）*

**ルナ（AI）:** 着陸成功です。アポロ、外に出てみましょうか。

**アポロ（犬）:** （興奮して）ワン！ワン！

*（アポロは宇宙服を着て、月面に降り立つ。）*

---

**シーン 5: 月面探査**

*（月面、アポロが走り回りながら探索している。）*

**ルナ（AI）:** アポロ、あまり遠くへ行かないでね。ここには地球にはない景色がたくさんあるから、気を付けて。

**アポロ（犬）:** （楽しそうに）ワン！ワン！

*（アポロは月の石を見つけ、興味深げに匂いを嗅ぐ。）*

**ルナ（AI）:** あれは月の石だね。とても貴重なものだよ。

---

**シーン 6: 帰還**

*（月面からロケットに戻り、再び地球へ向けて出発する。）*

**ルナ（AI）:** アポロ、君は本当に素晴らしい探検家だったね。地球に戻ったら、みんなに君の冒険を話してあげよう。

**アポロ（犬）:** （満足そうに）ワン！

---

**シーン 7: 地球 - 宇宙研究所**

*（地球、研究所に帰還したアポロとルナ。）*

**博士（Dr. Yamazaki）:** よくやった、アポロ！君のおかげで新しい発見ができたよ。

**助手（Asuka）:** ルナも素晴らしいサポートをありがとう！

**ルナ（AI）:** 皆さんのおかげです。アポロ、またいつか新しい冒険に出かけようね。

**アポロ（犬）:** （喜んで）ワン！

*（アポロがルナと一緒に研究所を歩いていくシーンで終わる。）*

---

**終わり**

---
Final Answer: my best complete final answer to the task.

## まとめ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/c284505d-8c7b-0b53-97e6-4c0069a590d1.png)


Praison AIは、AI Agentの開発と運用を大幅に簡素化する強力なフレームワークです。多様なLLMのサポート、使いやすいインターフェース、カスタマイズ性の高さなど、多くの利点を持っています。AI技術者やデベロッパーにとって、複雑なAIシステムを構築する際の強力なツールとなるでしょう。

Praison AIを使って、あなたも革新的なAIアプリケーションの開発を始めてみませんか？

## 参考リンク

- [Praison AI公式ドキュメント](https://docs.praison.ai/)
- [Praison AI GitHub](https://github.com/praison/praisonai)
GitHubには、Google Colabで簡単に動作確認ができるサンプルのノートブックがあります。

<iframe width="560" height="315" src="https://www.youtube.com/embed/tg-ZjNl3OCg?si=Wg01jv5VyxrfCq1G" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

---

この記事がPraison AIとAI Agentについて理解する助けになれば幸いです。