-
Notifications
You must be signed in to change notification settings - Fork 362
Add a blueprint for Haystack Deep Research Agent #461
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
@oryx1729 Can you update your commits to contain the DCO? More info here: https://github.com/NVIDIA/NeMo-Agent-Toolkit/pull/461/checks?check_run_id=46372766560 |
Hi @mdemoret-nv, @mpangrazzi is on vacation and will be back next week. Is it be possible to start the review and have the DCO done when he's back? |
@oryx1729 No problem. |
@mdemoret-nv Hi! Commits should be compliant with DCO now. |
70b2319
to
6ccb74a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would be better to utilize the LLM top level object.
agent_model: nvidia/llama-3.3-nemotron-super-49b-v1 | ||
rag_model: nvidia/llama-3.3-nemotron-super-49b-v1 | ||
nvidia_api_url: https://integrate.api.nvidia.com/v1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We would want this to use the llm
interface for specifying these models. Instead of referencing them directly, can we use the llms:
top level object to specify this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall this looks good.
Please ensure that all "public" functions have full documentation and that all functions have type annotations. It really helps with clarity.
I can imagine in the future a complete haystack plugin with various features :)
The workflow demonstrates several key NeMo-Agent-Toolkit patterns: | ||
|
||
- **Function Registration**: Each tool is registered as a function with its own configuration | ||
- **Builder Pattern**: The NeMo-Agent-Toolkit Builder is used to create and manage tools and LLMs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This currently does not use the builder at all
|
||
The workflow demonstrates several key NeMo-Agent-Toolkit patterns: | ||
|
||
- **Function Registration**: Each tool is registered as a function with its own configuration |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No functions are registered with the toolkit directly. You are creating internal tools and building them within your specific workflow.
|
||
general: | ||
use_uvloop: true | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can envision a more robust separation of components, but the scope of that would be far too large. Instead, let's consider some enhancements to your existing configuration:
general:
use_uvloop: true
llms:
rag_llm:
_type: nim
model: nvidia/llama-3.3-nemotron-super-49b-v1
api_key: ${NVIDIA_API_KEY}
agent_llm:
_type: nim
model: nvidia/llama-3.3-nemotron-super-49b-v1
api_key: ${NVIDIA_API_KEY}
workflow:
_type: haystack_deep_research_agent
max_agent_steps: 20
search_top_k: 10
rag_top_k: 15
opensearch_url: http://localhost:9200
data_dir: /data
index_on_startup: true
By specifying the LLMs separately, they can automatically take advantage of other parameters like temperature. You can also still easily get the configuration by doing:
You can then get the configuration from rag_llm
and instantiate the LLM by:
config = builder.get_llm_config("rag_llm")
generator = NVIDIAChatGenerator(**config.model_dump_json(exclude={"type"}))
You can do the same for agent_llm
Signed-off-by: Michele Pangrazzi <[email protected]>
Signed-off-by: oryx1729 <[email protected]> Signed-off-by: Michele Pangrazzi <[email protected]>
…iaChatGenerator ; Rewrote tests Signed-off-by: Michele Pangrazzi <[email protected]>
Signed-off-by: Michele Pangrazzi <[email protected]>
Signed-off-by: Michele Pangrazzi <[email protected]>
@willkill07 @mdemoret-nv Thank you! I've just did another iteration following your suggestions. |
Description
Adds a blueprint demonstrating how to build a deep research agent using Haystack Framework that combines web search and Retrieval-Augmented Generation (RAG) using the NeMo-Agent-Toolkit.
By Submitting this PR I confirm: