Skip to content

Commit 31e644d

Browse files
authored
Merge pull request #106 from ks6088ts-labs/feature/issue-105_parallel-rag-agent
update from parallel processor agent to parallel rag agent
2 parents 02db7f0 + b1f4d96 commit 31e644d

File tree

15 files changed

+231
-161
lines changed

15 files changed

+231
-161
lines changed

docs/index.ja.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ uv run python scripts/elasticsearch_operator.py create-index \
8989
# Azure AI Search
9090
make create-ai-search-index
9191

92-
# Azure Cosmos DB
92+
# Azure Cosmos DB
9393
make create-cosmosdb-index
9494

9595
# またはオペレータースクリプトを直接使用:
@@ -129,7 +129,7 @@ make create-cosmosdb-index
129129

130130
- `weather_agent.py` — シンプルなツール呼び出しエージェント。モック天気検索ツールを使った基本的な ReAct パターン。主要概念: ツール呼び出し、基本エージェントパターン。
131131
- `multi_agent.py` — マルチエージェント協調。転送機能を使ったエージェント間の引き渡しを実演。主要概念: エージェント協調、ワークフロー転送。
132-
- `parallel_processor_agent/` — 並列実行タスク分解。目標をタスクに分解し並列処理。主要概念: 並列処理、タスク分解、Send 操作。
132+
- `parallel_rag_agent/` — 並列実行タスク分解。目標をタスクに分解し並列処理。主要概念: 並列処理、タスク分解、Send 操作。
133133

134134
### サポートモジュール
135135

@@ -287,11 +287,11 @@ uv run python scripts/demo_agents_operator.py multi-agent \
287287
--verbose
288288
```
289289

290-
- Parallel processor agent(タスク分解):
290+
- Parallel rag agent(タスク分解):
291291

292292
```shell
293-
uv run python scripts/demo_agents_operator.py parallel-processor-agent \
294-
--goal "ソフトウェア会社立ち上げのための情報収集戦略を計画する" \
293+
uv run python scripts/demo_agents_operator.py parallel-rag-agent \
294+
--query "ソフトウェア会社立ち上げのための情報収集戦略を計画する" \
295295
--verbose
296296
```
297297

@@ -377,7 +377,7 @@ make mcp-inspector
377377
## 次のステップ
378378

379379
1. **基本から始める**: `kabuto_helpdesk_agent`の例を実行
380-
2. **デモエージェントを試す**: `weather_agent``multi_agent``parallel_processor_agent`でシンプルなパターンを探索
380+
2. **デモエージェントを試す**: `weather_agent``multi_agent``parallel_rag_agent`でシンプルなパターンを探索
381381
3. **実装を理解する**: `chat_with_tools_agent`と比較
382382
4. **高度なパターンを探索**: タスク分解器とスーパーバイザーエージェントを試す
383383
5. **独自のものを構築**: このテンプレートをあなたのユースケースの出発点として使用
@@ -404,6 +404,6 @@ uv run python scripts/otel_operator.py run -q "health check" -v
404404
3. **構造化出力エージェント** - フォーマットされたデータの返却(`issue_formatter_agent`
405405
4. **計画エージェント** - 複雑なタスクの分解(`task_decomposer_agent`
406406
5. **マルチエージェントシステム** - 複数エージェントの協調(`supervisor_agent``multi_agent`
407-
6. **並列処理** - 同時タスク実行(`parallel_processor_agent`
407+
6. **並列処理** - 同時タスク実行(`parallel_rag_agent`
408408

409409
各パターンは、いつどのように使用するかを理解するのに役立つ明確な例と文書で実装されています。

docs/index.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ uv run python scripts/elasticsearch_operator.py create-index \
8989
# Azure AI Search
9090
make create-ai-search-index
9191

92-
# Azure Cosmos DB
92+
# Azure Cosmos DB
9393
make create-cosmosdb-index
9494

9595
# Or use the operator scripts directly:
@@ -129,7 +129,7 @@ Additional simple agents for learning and demonstration:
129129

130130
- `weather_agent.py` — Simple tool-calling agent. Basic ReAct pattern with mock weather search tool. Key: tool calling, basic agent pattern.
131131
- `multi_agent.py` — Multi-agent coordination. Demonstrates agent-to-agent handoff using transfer functions. Key: agent coordination, workflow transfer.
132-
- `parallel_processor_agent/` — Task decomposition with parallel execution. Breaks down goals into tasks and processes them in parallel. Key: parallel processing, task decomposition, Send operations.
132+
- `parallel_rag_agent/` — Task decomposition with parallel execution. Breaks down querys into tasks and processes them in parallel. Key: parallel processing, task decomposition, Send operations.
133133

134134
### Supporting Modules
135135

@@ -287,11 +287,11 @@ uv run python scripts/demo_agents_operator.py multi-agent \
287287
--verbose
288288
```
289289

290-
- Parallel processor agent (task decomposition):
290+
- Parallel rag agent (task decomposition):
291291

292292
```shell
293-
uv run python scripts/demo_agents_operator.py parallel-processor-agent \
294-
--goal "Plan information gathering strategy for launching a software company" \
293+
uv run python scripts/demo_agents_operator.py parallel-rag-agent \
294+
--query "Plan information gathering strategy for launching a software company" \
295295
--verbose
296296
```
297297

@@ -379,7 +379,7 @@ make mcp-inspector
379379
## Next Steps
380380

381381
1. **Start with the basics**: Run the `kabuto_helpdesk_agent` example
382-
2. **Try demo agents**: Explore the simple patterns with `weather_agent`, `multi_agent`, and `parallel_processor_agent`
382+
2. **Try demo agents**: Explore the simple patterns with `weather_agent`, `multi_agent`, and `parallel_rag_agent`
383383
3. **Understand the implementation**: Compare it with `chat_with_tools_agent`
384384
4. **Explore advanced patterns**: Try the task decomposer and supervisor agents
385385
5. **Build your own**: Use this template as a starting point for your use case
@@ -406,6 +406,6 @@ This template demonstrates several proven agent architectures:
406406
3. **Structured Output Agent** - Returning formatted data (`issue_formatter_agent`)
407407
4. **Planning Agent** - Breaking down complex tasks (`task_decomposer_agent`)
408408
5. **Multi-Agent Systems** - Coordinating multiple agents (`supervisor_agent`, `multi_agent`)
409-
6. **Parallel Processing** - Concurrent task execution (`parallel_processor_agent`)
409+
6. **Parallel Processing** - Concurrent task execution (`parallel_rag_agent`)
410410

411411
Each pattern is implemented with clear examples and documentation to help you understand when and how to use them.

langgraph.json

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
{
2-
"dependencies": [
3-
"."
4-
],
2+
"dependencies": ["."],
53
"graphs": {
64
"chat_with_tools_agent": "template_langgraph.agents.chat_with_tools_agent.agent:graph",
7-
"demo_agents_parallel_processor_agent": "template_langgraph.agents.demo_agents.parallel_processor_agent.agent:graph",
5+
"demo_agents_parallel_rag_agent": "template_langgraph.agents.demo_agents.parallel_rag_agent.agent:graph",
86
"demo_agents_multi_agent": "template_langgraph.agents.demo_agents.multi_agent:graph",
97
"demo_agents_weather_agent": "template_langgraph.agents.demo_agents.weather_agent:graph",
108
"image_classifier_agent": "template_langgraph.agents.image_classifier_agent.agent:graph",
@@ -15,4 +13,4 @@
1513
"task_decomposer_agent": "template_langgraph.agents.task_decomposer_agent.agent:graph"
1614
},
1715
"env": ".env"
18-
}
16+
}

scripts/demo_agents_operator.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from dotenv import load_dotenv
55

66
from template_langgraph.agents.demo_agents.multi_agent import graph as multi_agent_graph
7-
from template_langgraph.agents.demo_agents.parallel_processor_agent.agent import graph as parallel_processor_agent_graph
7+
from template_langgraph.agents.demo_agents.parallel_rag_agent.agent import graph as parallel_rag_agent_graph
88
from template_langgraph.agents.demo_agents.weather_agent import graph as weather_agent_graph
99
from template_langgraph.loggers import get_logger
1010

@@ -74,12 +74,12 @@ def multi_agent(
7474

7575

7676
@app.command()
77-
def parallel_processor_agent(
78-
goal: str = typer.Option(
79-
"ソフトウェアシステム開発会社を立ち上げる戦略を立てるための情報収集をしたい",
80-
"--goal",
81-
"-g",
82-
help="The goal to decompose into tasks",
77+
def parallel_rag_agent(
78+
query: str = typer.Option(
79+
"KABUTO のシステム概要やトラブルシュート事例を多種多様な情報ソースから回答して",
80+
"--query",
81+
"-q",
82+
help="The query to decompose into tasks",
8383
),
8484
verbose: bool = typer.Option(
8585
False,
@@ -91,9 +91,9 @@ def parallel_processor_agent(
9191
if verbose:
9292
logger.setLevel(logging.DEBUG)
9393

94-
for event in parallel_processor_agent_graph.stream(
94+
for event in parallel_rag_agent_graph.stream(
9595
input={
96-
"goal": goal,
96+
"query": query,
9797
},
9898
debug=True,
9999
):

template_langgraph/agents/demo_agents/parallel_processor_agent/agent.py

Lines changed: 0 additions & 39 deletions
This file was deleted.

template_langgraph/agents/demo_agents/parallel_processor_agent/nodes/decompose_tasks.py

Lines changed: 0 additions & 34 deletions
This file was deleted.

template_langgraph/agents/demo_agents/parallel_processor_agent/nodes/run_task.py

Lines changed: 0 additions & 31 deletions
This file was deleted.

template_langgraph/agents/demo_agents/parallel_processor_agent/nodes/summarize_results.py

Lines changed: 0 additions & 19 deletions
This file was deleted.
File renamed without changes.
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from langchain_core.language_models.chat_models import BaseChatModel
2+
from langchain_core.tools.base import BaseTool
3+
from langgraph.graph import StateGraph
4+
from langgraph.graph.state import CompiledStateGraph
5+
6+
from template_langgraph.agents.demo_agents.parallel_rag_agent.models import (
7+
ParallelRagAgentInputState,
8+
ParallelRagAgentOutputState,
9+
ParallelRagAgentState,
10+
)
11+
from template_langgraph.agents.demo_agents.parallel_rag_agent.nodes.decompose_tasks import DecomposeTasks
12+
from template_langgraph.agents.demo_agents.parallel_rag_agent.nodes.run_task import RunTask
13+
from template_langgraph.agents.demo_agents.parallel_rag_agent.nodes.summarize_results import SummarizeResults
14+
from template_langgraph.llms.azure_openais import AzureOpenAiWrapper
15+
from template_langgraph.tools.common import get_default_tools
16+
17+
18+
class ParallelRagAgent:
19+
def __init__(
20+
self,
21+
llm: BaseChatModel,
22+
tools: list[BaseTool],
23+
):
24+
self.llm = llm
25+
self.decompose_tasks = DecomposeTasks(
26+
llm=llm,
27+
tools=tools,
28+
)
29+
self.run_task = RunTask(
30+
llm=llm,
31+
tools=tools,
32+
)
33+
self.summarize_results = SummarizeResults()
34+
35+
def create_graph(self) -> CompiledStateGraph:
36+
workflow = StateGraph(
37+
state_schema=ParallelRagAgentState,
38+
input_schema=ParallelRagAgentInputState,
39+
output_schema=ParallelRagAgentOutputState,
40+
)
41+
workflow.add_node("decompose_tasks", self.decompose_tasks)
42+
workflow.add_node("run_task", self.run_task)
43+
workflow.add_node("summarize_results", self.summarize_results)
44+
45+
workflow.add_edge("run_task", "summarize_results")
46+
workflow.set_entry_point("decompose_tasks")
47+
workflow.set_finish_point("summarize_results")
48+
return workflow.compile()
49+
50+
51+
graph = ParallelRagAgent(
52+
llm=AzureOpenAiWrapper().chat_model,
53+
tools=get_default_tools(),
54+
).create_graph()

0 commit comments

Comments
 (0)