Pengent: 軽量・高性能なAIエージェントフレームワークをご紹介
まもなくリリース$ソース公開予定!!
🐧 Pengentとは?
Pengentは、LangChainライクな軽量フレームワークで、複数のLLM(OpenAI, Claude, Gemini, OpenRouterなど)を同じインターフェースで利用できるライブラリです。
由来は Linuxのペンギン(Tux) + AIエージェント を掛け合わせたものです。
特徴は以下の通りです:
- LangChainより軽量で高性能
- LLMとルールベースのハイブリッド構築が可能
- バックエンド・フロントエンドを含めた「すぐ使える基盤」
- 50種類以上の標準ツールと専門エージェントを搭載
🚀 強み
- 軽量 × 高性能:LangChainよりも扱いやすい
- 実務寄りのプリセット:すぐに役立つツール&エージェント
- カスタマイズ性:独自要件に合わせたエージェントを簡単に構築可能
- 拡張性:MCP、バッチ処理、外部サービス連携をサポート
💡 ユースケース
-
業界情報の自動収集・解析・発信
- ニュース収集 → AI要約 → 各プラットフォームへ配信
-
AIヘルプデスク
- ドキュメント/ソース解析 → RAG活用 → FAQ・問い合わせ対応
-
タスクアシスタント
- Slack, Redmine, GitHub Issuesと連携
- 通知・FAQ回答・チケット作成
-
本格的なチャットアプリ基盤
- 認証、DB、APIを備えたバックエンド
- チャット+プロジェクト管理UI
-
エージェントオーケストレーション
- Task Runnerで複数エージェントを連携
- ニュース収集 → 要約 → 翻訳 → 発信などを自動化
Pengentの主な構成
主な機能を紹介
LLM統合
- OpenAI, Claude, Gemini, OpenRouter を同じインターフェースで利用可能
- モデル切替やパラメータ調整が容易
- バッチリクエスト対応(OpenAI社、Anthropic社ならば半額)
サンプルコード
llm_client = LLMOpenAIClient(
model_name="gpt-4.1-mini",
temperature=0.3,
config={
"is_output_file": False,
"max_tokens": 200,
"system_prompt": "\n".join([
"あなたは優秀な窓口案内です。",
"わかりやすく、自然な日本語で丁寧に説明してください。",
"誤字や不自然な表現を避け、短めにまとめてください。"
]),
}
)
res = llm_client.request(prompt="富士山はどこの県にありますか?")
print(res.content)
llm_client = LLMGeminiClient(
model_name="gemini-2.5-flash-lite",
temperature=0.3,
config={
"is_output_file": False,
"is_auto_setup": True,
"max_tokens": 500,
"system_prompt": "\n".join([
"あなたは優秀な窓口案内です。",
"わかりやすく、自然な日本語で丁寧に説明してください。",
"誤字や不自然な表現を避け、短めにまとめてください。"
]),
}
)
res = llm_client.request(prompt="富士山はどこの県にありますか?")
print(res.content)
ツール & MCP連携(50+)
- Web検索
- WEB検索, WEB解析,PDF読み込み,RAG登録
- ソース管理、コード解析
- Git管理,リポジトリ解析(Github, Gitea)
- コード実行
- メッセージ通知
- Redmine,Slack,RocketChat,Mattermost,Line,Git Issues
- ストレージ連携
- 翻訳
- データベース接続
- コンテンツ生成
- MCPを通じた外部サービス連携
エージェント
- 汎用エージェント(チャット、QAなど)
- 専門エージェント(ヒアリング、コンテンツ生成、システムデザイン、FAQ対応)
-
独自エージェントも簡単に作成可能
- モデルの設定
- プロンプトカスタマイズ
- ツール/MCPの組み込み
- パラメータ調整
- ルールベースによりエージェントを制御可能
agent = AgentCoder()
agent.set_tools(is_tools_call=False)
agent.run()
output:AgentSendOutput = agent.send("""
C#の配列の使い方を教えて欲しいです。
サンプルコードを書いてください。
""" )
logger.debug(output)
Task Runner
- 複数エージェントをオーケストレーションが可能
- ワークフローを定義し、要件に応じた処理を自動化
- 複数メッセージ管理を実現
- Historyメモリ
- 要約メモリ
- RAGメモリ
バックエンドコア機能構築
- リクエスト・タスク管理機能
- 外部データベース連携(RDB,インメモリ,NoSQL)
- ルーティング機能(エージェントの切り替え)
- リクエストのパス、パラメータによる切替
- メッセージによりルールベースでの切替
- LLM(ナビゲータエージェント)の判断による切替
🔭 今後の展望
OSSとしてコードを公開する予定です
- 従来型AI(機械学習・ディープラーニングモデル)との統合
- 外部サービス連携のさらなる拡充
- より柔軟なワークフロー
- 開発者コミュニティとエコシステムの拡大
開発者: Ryoh (https://ryho-ya-porfolio.netlify.app/)
