chore: import upstream snapshot with attribution
CodeQL / Analyze (python) (push) Has been cancelled
Update Platform Components Table / update (push) Has been cancelled
Docker image release / Build base image (push) Has been cancelled
Sync docs with Docusaurus / sync (push) Has been cancelled
Tests / Check if changed (push) Has been cancelled
Tests / format (push) Has been cancelled
Tests / check-imports (push) Has been cancelled
Tests / Unit / macos-latest (push) Has been cancelled
Tests / Unit / ubuntu-latest (push) Has been cancelled
Tests / Unit / windows-latest (push) Has been cancelled
Tests / mypy (push) Has been cancelled
Tests / Integration / ubuntu-latest (push) Has been cancelled
Tests / Integration / macos-latest (push) Has been cancelled
Tests / Integration / windows-latest (push) Has been cancelled
Tests / notify-slack-on-failure (push) Has been cancelled
Tests / Mark tests as completed (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Update Platform Components Table / update (push) Has been cancelled
Docker image release / Build base image (push) Has been cancelled
Sync docs with Docusaurus / sync (push) Has been cancelled
Tests / Check if changed (push) Has been cancelled
Tests / format (push) Has been cancelled
Tests / check-imports (push) Has been cancelled
Tests / Unit / macos-latest (push) Has been cancelled
Tests / Unit / ubuntu-latest (push) Has been cancelled
Tests / Unit / windows-latest (push) Has been cancelled
Tests / mypy (push) Has been cancelled
Tests / Integration / ubuntu-latest (push) Has been cancelled
Tests / Integration / macos-latest (push) Has been cancelled
Tests / Integration / windows-latest (push) Has been cancelled
Tests / notify-slack-on-failure (push) Has been cancelled
Tests / Mark tests as completed (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,581 @@
|
||||
---
|
||||
title: "Get Started"
|
||||
id: get-started
|
||||
slug: "/get-started"
|
||||
description: "Learn how to quickly get up and running with Haystack. Build your first RAG pipeline and tool-calling Agent with step-by-step examples for multiple LLM providers."
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Get Started
|
||||
|
||||
Have a look at this page to learn how to quickly get up and running with Haystack. It contains instructions for installing Haystack, building your first RAG pipeline, and creating a tool-calling Agent.
|
||||
|
||||
## Build your first RAG application
|
||||
|
||||
Let's build your first Retrieval Augmented Generation (RAG) pipeline and see how Haystack answers questions.
|
||||
|
||||
First, install the minimal form of Haystack:
|
||||
|
||||
```shell
|
||||
pip install haystack-ai
|
||||
```
|
||||
|
||||
In the examples below, we show how to set an API key using a Haystack [Secret](../concepts/secret-management.mdx). Choose your preferred LLM provider from the tabs below. For easier use, you can also set the API key as an environment variable.
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="openai" label="OpenAI" default>
|
||||
|
||||
[OpenAIChatGenerator](../pipeline-components/generators/openaichatgenerator.mdx) is included in the `haystack-ai` package.
|
||||
|
||||
```python
|
||||
from haystack import Pipeline, Document
|
||||
from haystack.components.generators.chat import OpenAIChatGenerator
|
||||
from haystack.components.retrievers import InMemoryBM25Retriever
|
||||
from haystack.document_stores.in_memory import InMemoryDocumentStore
|
||||
from haystack.components.builders import ChatPromptBuilder
|
||||
from haystack.utils import Secret
|
||||
from haystack.dataclasses import ChatMessage
|
||||
|
||||
document_store = InMemoryDocumentStore()
|
||||
document_store.write_documents(
|
||||
[
|
||||
Document(content="My name is Jean and I live in Paris."),
|
||||
Document(content="My name is Mark and I live in Berlin."),
|
||||
Document(content="My name is Giorgio and I live in Rome."),
|
||||
],
|
||||
)
|
||||
|
||||
prompt_template = [
|
||||
ChatMessage.from_system(
|
||||
"""
|
||||
Given these documents, answer the question.
|
||||
Documents:
|
||||
{% for doc in documents %}
|
||||
{{ doc.content }}
|
||||
{% endfor %}
|
||||
""",
|
||||
),
|
||||
ChatMessage.from_user("{{question}}"),
|
||||
]
|
||||
|
||||
retriever = InMemoryBM25Retriever(document_store=document_store)
|
||||
prompt_builder = ChatPromptBuilder(template=prompt_template, required_variables="*")
|
||||
llm = OpenAIChatGenerator(
|
||||
api_key=Secret.from_env_var("OPENAI_API_KEY"),
|
||||
model="gpt-4o-mini",
|
||||
)
|
||||
|
||||
rag_pipeline = Pipeline()
|
||||
rag_pipeline.add_component("retriever", retriever)
|
||||
rag_pipeline.add_component("prompt_builder", prompt_builder)
|
||||
rag_pipeline.add_component("llm", llm)
|
||||
rag_pipeline.connect("retriever", "prompt_builder.documents")
|
||||
rag_pipeline.connect("prompt_builder", "llm")
|
||||
|
||||
question = "Who lives in Paris?"
|
||||
results = rag_pipeline.run(
|
||||
{
|
||||
"retriever": {"query": question},
|
||||
"prompt_builder": {"question": question},
|
||||
},
|
||||
)
|
||||
|
||||
print(results["llm"]["replies"])
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="huggingface" label="Hugging Face">
|
||||
|
||||
[HuggingFaceAPIChatGenerator](../pipeline-components/generators/huggingfaceapichatgenerator.mdx) is included in the `huggingface-api-haystack` package. You can get a [free Hugging Face token](https://huggingface.co/settings/tokens) to use the Serverless Inference API.
|
||||
|
||||
The examples on this page use the Hugging Face API components and the SerperDev web search component, which have moved to the `huggingface-api-haystack` and `serperdev-haystack` packages. Install them to run the examples:
|
||||
|
||||
```shell
|
||||
pip install huggingface-api-haystack serperdev-haystack
|
||||
```
|
||||
|
||||
```python
|
||||
from haystack import Pipeline, Document
|
||||
from haystack_integrations.components.generators.huggingface_api import (
|
||||
HuggingFaceAPIChatGenerator,
|
||||
)
|
||||
from haystack.components.retrievers import InMemoryBM25Retriever
|
||||
from haystack.document_stores.in_memory import InMemoryDocumentStore
|
||||
from haystack.components.builders import ChatPromptBuilder
|
||||
from haystack.utils import Secret
|
||||
from haystack.dataclasses import ChatMessage
|
||||
|
||||
document_store = InMemoryDocumentStore()
|
||||
document_store.write_documents(
|
||||
[
|
||||
Document(content="My name is Jean and I live in Paris."),
|
||||
Document(content="My name is Mark and I live in Berlin."),
|
||||
Document(content="My name is Giorgio and I live in Rome."),
|
||||
],
|
||||
)
|
||||
|
||||
prompt_template = [
|
||||
ChatMessage.from_system(
|
||||
"""
|
||||
Given these documents, answer the question.
|
||||
Documents:
|
||||
{% for doc in documents %}
|
||||
{{ doc.content }}
|
||||
{% endfor %}
|
||||
""",
|
||||
),
|
||||
ChatMessage.from_user("{{question}}"),
|
||||
]
|
||||
|
||||
retriever = InMemoryBM25Retriever(document_store=document_store)
|
||||
prompt_builder = ChatPromptBuilder(template=prompt_template, required_variables="*")
|
||||
llm = HuggingFaceAPIChatGenerator(
|
||||
api_type="serverless_inference_api",
|
||||
api_params={"model": "Qwen/Qwen2.5-72B-Instruct"},
|
||||
token=Secret.from_env_var("HF_API_TOKEN"),
|
||||
)
|
||||
|
||||
rag_pipeline = Pipeline()
|
||||
rag_pipeline.add_component("retriever", retriever)
|
||||
rag_pipeline.add_component("prompt_builder", prompt_builder)
|
||||
rag_pipeline.add_component("llm", llm)
|
||||
rag_pipeline.connect("retriever", "prompt_builder.documents")
|
||||
rag_pipeline.connect("prompt_builder", "llm")
|
||||
|
||||
question = "Who lives in Paris?"
|
||||
results = rag_pipeline.run(
|
||||
{
|
||||
"retriever": {"query": question},
|
||||
"prompt_builder": {"question": question},
|
||||
},
|
||||
)
|
||||
|
||||
print(results["llm"]["replies"])
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="anthropic" label="Anthropic">
|
||||
|
||||
Install the [Anthropic integration](https://haystack.deepset.ai/integrations/anthropic):
|
||||
|
||||
```bash
|
||||
pip install anthropic-haystack
|
||||
```
|
||||
|
||||
See the [AnthropicChatGenerator](../pipeline-components/generators/anthropicchatgenerator.mdx) docs for more details.
|
||||
|
||||
```python
|
||||
from haystack import Pipeline, Document
|
||||
from haystack_integrations.components.generators.anthropic import AnthropicChatGenerator
|
||||
from haystack.components.retrievers import InMemoryBM25Retriever
|
||||
from haystack.document_stores.in_memory import InMemoryDocumentStore
|
||||
from haystack.components.builders import ChatPromptBuilder
|
||||
from haystack.utils import Secret
|
||||
from haystack.dataclasses import ChatMessage
|
||||
|
||||
document_store = InMemoryDocumentStore()
|
||||
document_store.write_documents(
|
||||
[
|
||||
Document(content="My name is Jean and I live in Paris."),
|
||||
Document(content="My name is Mark and I live in Berlin."),
|
||||
Document(content="My name is Giorgio and I live in Rome."),
|
||||
],
|
||||
)
|
||||
|
||||
prompt_template = [
|
||||
ChatMessage.from_system(
|
||||
"""
|
||||
Given these documents, answer the question.
|
||||
Documents:
|
||||
{% for doc in documents %}
|
||||
{{ doc.content }}
|
||||
{% endfor %}
|
||||
""",
|
||||
),
|
||||
ChatMessage.from_user("{{question}}"),
|
||||
]
|
||||
|
||||
retriever = InMemoryBM25Retriever(document_store=document_store)
|
||||
prompt_builder = ChatPromptBuilder(template=prompt_template, required_variables="*")
|
||||
llm = AnthropicChatGenerator(
|
||||
api_key=Secret.from_env_var("ANTHROPIC_API_KEY"),
|
||||
model="claude-sonnet-4-5-20250929",
|
||||
)
|
||||
|
||||
rag_pipeline = Pipeline()
|
||||
rag_pipeline.add_component("retriever", retriever)
|
||||
rag_pipeline.add_component("prompt_builder", prompt_builder)
|
||||
rag_pipeline.add_component("llm", llm)
|
||||
rag_pipeline.connect("retriever", "prompt_builder.documents")
|
||||
rag_pipeline.connect("prompt_builder", "llm")
|
||||
|
||||
question = "Who lives in Paris?"
|
||||
results = rag_pipeline.run(
|
||||
{
|
||||
"retriever": {"query": question},
|
||||
"prompt_builder": {"question": question},
|
||||
},
|
||||
)
|
||||
|
||||
print(results["llm"]["replies"])
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="amazon-bedrock" label="Amazon Bedrock">
|
||||
|
||||
Install the [Amazon Bedrock integration](https://haystack.deepset.ai/integrations/amazon-bedrock):
|
||||
|
||||
```bash
|
||||
pip install amazon-bedrock-haystack
|
||||
```
|
||||
|
||||
See the [AmazonBedrockChatGenerator](../pipeline-components/generators/amazonbedrockchatgenerator.mdx) docs for more details.
|
||||
|
||||
```python
|
||||
import os
|
||||
from haystack import Pipeline, Document
|
||||
from haystack_integrations.components.generators.amazon_bedrock import (
|
||||
AmazonBedrockChatGenerator,
|
||||
)
|
||||
from haystack.components.retrievers import InMemoryBM25Retriever
|
||||
from haystack.document_stores.in_memory import InMemoryDocumentStore
|
||||
from haystack.components.builders import ChatPromptBuilder
|
||||
from haystack.dataclasses import ChatMessage
|
||||
|
||||
os.environ["AWS_ACCESS_KEY_ID"] = "YOUR_AWS_ACCESS_KEY_ID"
|
||||
os.environ["AWS_SECRET_ACCESS_KEY"] = "YOUR_AWS_SECRET_ACCESS_KEY"
|
||||
os.environ["AWS_DEFAULT_REGION"] = "YOUR_AWS_REGION"
|
||||
|
||||
document_store = InMemoryDocumentStore()
|
||||
document_store.write_documents(
|
||||
[
|
||||
Document(content="My name is Jean and I live in Paris."),
|
||||
Document(content="My name is Mark and I live in Berlin."),
|
||||
Document(content="My name is Giorgio and I live in Rome."),
|
||||
],
|
||||
)
|
||||
|
||||
prompt_template = [
|
||||
ChatMessage.from_system(
|
||||
"""
|
||||
Given these documents, answer the question.
|
||||
Documents:
|
||||
{% for doc in documents %}
|
||||
{{ doc.content }}
|
||||
{% endfor %}
|
||||
""",
|
||||
),
|
||||
ChatMessage.from_user("{{question}}"),
|
||||
]
|
||||
|
||||
retriever = InMemoryBM25Retriever(document_store=document_store)
|
||||
prompt_builder = ChatPromptBuilder(template=prompt_template, required_variables="*")
|
||||
llm = AmazonBedrockChatGenerator(model="anthropic.claude-3-5-sonnet-20240620-v1:0")
|
||||
|
||||
rag_pipeline = Pipeline()
|
||||
rag_pipeline.add_component("retriever", retriever)
|
||||
rag_pipeline.add_component("prompt_builder", prompt_builder)
|
||||
rag_pipeline.add_component("llm", llm)
|
||||
rag_pipeline.connect("retriever", "prompt_builder.documents")
|
||||
rag_pipeline.connect("prompt_builder", "llm")
|
||||
|
||||
question = "Who lives in Paris?"
|
||||
results = rag_pipeline.run(
|
||||
{
|
||||
"retriever": {"query": question},
|
||||
"prompt_builder": {"question": question},
|
||||
},
|
||||
)
|
||||
|
||||
print(results["llm"]["replies"])
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="google-gemini" label="Google Gemini">
|
||||
|
||||
Install the [Google Gen AI integration](https://haystack.deepset.ai/integrations/google-genai):
|
||||
|
||||
```bash
|
||||
pip install google-genai-haystack
|
||||
```
|
||||
|
||||
See the [GoogleGenAIChatGenerator](../pipeline-components/generators/googlegenaichatgenerator.mdx) docs for more details.
|
||||
|
||||
```python
|
||||
from haystack import Pipeline, Document
|
||||
from haystack_integrations.components.generators.google_genai import (
|
||||
GoogleGenAIChatGenerator,
|
||||
)
|
||||
from haystack.components.retrievers import InMemoryBM25Retriever
|
||||
from haystack.document_stores.in_memory import InMemoryDocumentStore
|
||||
from haystack.components.builders import ChatPromptBuilder
|
||||
from haystack.utils import Secret
|
||||
from haystack.dataclasses import ChatMessage
|
||||
|
||||
document_store = InMemoryDocumentStore()
|
||||
document_store.write_documents(
|
||||
[
|
||||
Document(content="My name is Jean and I live in Paris."),
|
||||
Document(content="My name is Mark and I live in Berlin."),
|
||||
Document(content="My name is Giorgio and I live in Rome."),
|
||||
],
|
||||
)
|
||||
|
||||
prompt_template = [
|
||||
ChatMessage.from_system(
|
||||
"""
|
||||
Given these documents, answer the question.
|
||||
Documents:
|
||||
{% for doc in documents %}
|
||||
{{ doc.content }}
|
||||
{% endfor %}
|
||||
""",
|
||||
),
|
||||
ChatMessage.from_user("{{question}}"),
|
||||
]
|
||||
|
||||
retriever = InMemoryBM25Retriever(document_store=document_store)
|
||||
prompt_builder = ChatPromptBuilder(template=prompt_template, required_variables="*")
|
||||
llm = GoogleGenAIChatGenerator(
|
||||
api_key=Secret.from_env_var("GOOGLE_API_KEY"),
|
||||
model="gemini-2.5-flash",
|
||||
)
|
||||
|
||||
rag_pipeline = Pipeline()
|
||||
rag_pipeline.add_component("retriever", retriever)
|
||||
rag_pipeline.add_component("prompt_builder", prompt_builder)
|
||||
rag_pipeline.add_component("llm", llm)
|
||||
rag_pipeline.connect("retriever", "prompt_builder.documents")
|
||||
rag_pipeline.connect("prompt_builder", "llm")
|
||||
|
||||
question = "Who lives in Paris?"
|
||||
results = rag_pipeline.run(
|
||||
{
|
||||
"retriever": {"query": question},
|
||||
"prompt_builder": {"question": question},
|
||||
},
|
||||
)
|
||||
|
||||
print(results["llm"]["replies"])
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="more-providers" label="More Providers">
|
||||
|
||||
<div style={{backgroundColor: 'var(--ifm-color-emphasis-100)', padding: '1.5rem', borderRadius: '8px'}}>
|
||||
|
||||
Haystack supports many more model providers including **Cohere**, **Mistral**, **NVIDIA**, **Ollama**, and others—both cloud-hosted and local options.
|
||||
|
||||
Browse the full list of supported models and chat generators in the [Generators documentation](../pipeline-components/generators.mdx).
|
||||
|
||||
You can also explore all available integrations on the [Haystack Integrations](https://haystack.deepset.ai/integrations) page.
|
||||
|
||||
</div>
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
### Next Steps
|
||||
|
||||
Ready to dive deeper? Check out the [Creating Your First QA Pipeline with Retrieval-Augmentation](https://haystack.deepset.ai/tutorials/27_first_rag_pipeline) tutorial for a step-by-step guide on building a complete RAG pipeline with your own data.
|
||||
|
||||
## Build your first Agent
|
||||
|
||||
Agents are AI systems that can use tools to gather information, perform actions, and interact with external systems. Let's build an agent that can search the web to answer questions.
|
||||
|
||||
This example requires a [SerperDev API key](https://serper.dev/) for web search. Set it as the `SERPERDEV_API_KEY` environment variable.
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="openai" label="OpenAI" default>
|
||||
|
||||
[OpenAIChatGenerator](../pipeline-components/generators/openaichatgenerator.mdx) is included in the `haystack-ai` package.
|
||||
|
||||
```python
|
||||
from haystack.components.agents import Agent
|
||||
from haystack.components.generators.chat import OpenAIChatGenerator
|
||||
from haystack.dataclasses import ChatMessage
|
||||
from haystack.tools import ComponentTool
|
||||
from haystack_integrations.components.websearch.serperdev import SerperDevWebSearch
|
||||
from haystack.utils import Secret
|
||||
|
||||
search_tool = ComponentTool(component=SerperDevWebSearch())
|
||||
|
||||
agent = Agent(
|
||||
chat_generator=OpenAIChatGenerator(
|
||||
api_key=Secret.from_env_var("OPENAI_API_KEY"),
|
||||
model="gpt-4o-mini",
|
||||
),
|
||||
tools=[search_tool],
|
||||
system_prompt="You are a helpful assistant that can search the web for information.",
|
||||
)
|
||||
|
||||
result = agent.run(messages=[ChatMessage.from_user("What is Haystack AI?")])
|
||||
|
||||
print(result["last_message"].text)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="huggingface" label="Hugging Face">
|
||||
|
||||
[HuggingFaceAPIChatGenerator](../pipeline-components/generators/huggingfaceapichatgenerator.mdx) is included in the `huggingface-api-haystack` package. You can get a [free Hugging Face token](https://huggingface.co/settings/tokens) to use the Serverless Inference API.
|
||||
|
||||
```python
|
||||
from haystack.components.agents import Agent
|
||||
from haystack_integrations.components.generators.huggingface_api import (
|
||||
HuggingFaceAPIChatGenerator,
|
||||
)
|
||||
from haystack.dataclasses import ChatMessage
|
||||
from haystack.tools import ComponentTool
|
||||
from haystack_integrations.components.websearch.serperdev import SerperDevWebSearch
|
||||
from haystack.utils import Secret
|
||||
|
||||
search_tool = ComponentTool(component=SerperDevWebSearch())
|
||||
|
||||
agent = Agent(
|
||||
chat_generator=HuggingFaceAPIChatGenerator(
|
||||
api_type="serverless_inference_api",
|
||||
api_params={"model": "Qwen/Qwen2.5-72B-Instruct"},
|
||||
token=Secret.from_env_var("HF_API_TOKEN"),
|
||||
),
|
||||
tools=[search_tool],
|
||||
system_prompt="You are a helpful assistant that can search the web for information.",
|
||||
)
|
||||
|
||||
result = agent.run(messages=[ChatMessage.from_user("What is Haystack AI?")])
|
||||
|
||||
print(result["last_message"].text)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="anthropic" label="Anthropic">
|
||||
|
||||
Install the [Anthropic integration](https://haystack.deepset.ai/integrations/anthropic):
|
||||
|
||||
```bash
|
||||
pip install anthropic-haystack
|
||||
```
|
||||
|
||||
See the [AnthropicChatGenerator](../pipeline-components/generators/anthropicchatgenerator.mdx) docs for more details.
|
||||
|
||||
```python
|
||||
from haystack.components.agents import Agent
|
||||
from haystack_integrations.components.generators.anthropic import AnthropicChatGenerator
|
||||
from haystack.dataclasses import ChatMessage
|
||||
from haystack.tools import ComponentTool
|
||||
from haystack_integrations.components.websearch.serperdev import SerperDevWebSearch
|
||||
from haystack.utils import Secret
|
||||
|
||||
search_tool = ComponentTool(component=SerperDevWebSearch())
|
||||
|
||||
agent = Agent(
|
||||
chat_generator=AnthropicChatGenerator(
|
||||
api_key=Secret.from_env_var("ANTHROPIC_API_KEY"),
|
||||
model="claude-sonnet-4-5-20250929",
|
||||
),
|
||||
tools=[search_tool],
|
||||
system_prompt="You are a helpful assistant that can search the web for information.",
|
||||
)
|
||||
|
||||
result = agent.run(messages=[ChatMessage.from_user("What is Haystack AI?")])
|
||||
|
||||
print(result["last_message"].text)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="amazon-bedrock" label="Amazon Bedrock">
|
||||
|
||||
Install the [Amazon Bedrock integration](https://haystack.deepset.ai/integrations/amazon-bedrock):
|
||||
|
||||
```bash
|
||||
pip install amazon-bedrock-haystack
|
||||
```
|
||||
|
||||
See the [AmazonBedrockChatGenerator](../pipeline-components/generators/amazonbedrockchatgenerator.mdx) docs for more details.
|
||||
|
||||
```python
|
||||
import os
|
||||
from haystack.components.agents import Agent
|
||||
from haystack_integrations.components.generators.amazon_bedrock import (
|
||||
AmazonBedrockChatGenerator,
|
||||
)
|
||||
from haystack.dataclasses import ChatMessage
|
||||
from haystack.tools import ComponentTool
|
||||
from haystack_integrations.components.websearch.serperdev import SerperDevWebSearch
|
||||
|
||||
os.environ["AWS_ACCESS_KEY_ID"] = "YOUR_AWS_ACCESS_KEY_ID"
|
||||
os.environ["AWS_SECRET_ACCESS_KEY"] = "YOUR_AWS_SECRET_ACCESS_KEY"
|
||||
os.environ["AWS_DEFAULT_REGION"] = "YOUR_AWS_REGION"
|
||||
|
||||
search_tool = ComponentTool(component=SerperDevWebSearch())
|
||||
|
||||
agent = Agent(
|
||||
chat_generator=AmazonBedrockChatGenerator(
|
||||
model="anthropic.claude-3-5-sonnet-20240620-v1:0",
|
||||
),
|
||||
tools=[search_tool],
|
||||
system_prompt="You are a helpful assistant that can search the web for information.",
|
||||
)
|
||||
|
||||
result = agent.run(messages=[ChatMessage.from_user("What is Haystack AI?")])
|
||||
|
||||
print(result["last_message"].text)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="google-gemini" label="Google Gemini">
|
||||
|
||||
Install the [Google Gen AI integration](https://haystack.deepset.ai/integrations/google-genai):
|
||||
|
||||
```bash
|
||||
pip install google-genai-haystack
|
||||
```
|
||||
|
||||
See the [GoogleGenAIChatGenerator](../pipeline-components/generators/googlegenaichatgenerator.mdx) docs for more details.
|
||||
|
||||
```python
|
||||
from haystack.components.agents import Agent
|
||||
from haystack_integrations.components.generators.google_genai import (
|
||||
GoogleGenAIChatGenerator,
|
||||
)
|
||||
from haystack.dataclasses import ChatMessage
|
||||
from haystack.tools import ComponentTool
|
||||
from haystack_integrations.components.websearch.serperdev import SerperDevWebSearch
|
||||
from haystack.utils import Secret
|
||||
|
||||
search_tool = ComponentTool(component=SerperDevWebSearch())
|
||||
|
||||
agent = Agent(
|
||||
chat_generator=GoogleGenAIChatGenerator(
|
||||
api_key=Secret.from_env_var("GOOGLE_API_KEY"),
|
||||
model="gemini-2.5-flash",
|
||||
),
|
||||
tools=[search_tool],
|
||||
system_prompt="You are a helpful assistant that can search the web for information.",
|
||||
)
|
||||
|
||||
result = agent.run(messages=[ChatMessage.from_user("What is Haystack AI?")])
|
||||
|
||||
print(result["last_message"].text)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="more-providers" label="More Providers">
|
||||
|
||||
<div style={{backgroundColor: 'var(--ifm-color-emphasis-100)', padding: '1.5rem', borderRadius: '8px'}}>
|
||||
|
||||
Haystack supports many more model providers including **Cohere**, **Mistral**, **NVIDIA**, **Ollama**, and others—both cloud-hosted and local options.
|
||||
|
||||
Browse the full list of supported models and chat generators in the [Generators documentation](../pipeline-components/generators.mdx).
|
||||
|
||||
You can also explore all available integrations on the [Haystack Integrations](https://haystack.deepset.ai/integrations) page.
|
||||
|
||||
</div>
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
### Next Steps
|
||||
|
||||
For a hands-on guide on creating a tool-calling agent that can use both components and pipelines as tools, check out the [Build a Tool-Calling Agent](https://haystack.deepset.ai/tutorials/43_building_a_tool_calling_agent) tutorial.
|
||||
Reference in New Issue
Block a user