Imaginez que vous construisez une IA de support client qui doit répondre à des questions sur votre produit. Parfois, il doit extraire des informations de votre documentation, tandis que d'autres fois, il doit rechercher sur le Web les dernières mises à jour. Les systèmes de chiffon agentiques sont utiles dans de tels types d'applications d'IA complexes. Considérez-les comme des assistants de recherche intelligents qui ne connaissent pas seulement votre documentation interne, mais décidez également quand aller chercher sur le Web. Dans ce guide, nous allons parcourir le processus de construction d'un système de chiffon d'assurance autonome en utilisant le framework de back de foin.
Objectifs d'apprentissage
- Sachez ce qu'est un LLM agentique et comprenez en quoi il est différent d'un système de chiffon.
- Familiarisez le cadre de la back de foin pour les applications LLM agentiques.
- Comprendre le processus de construction rapide à partir d'un modèle et apprendre à rejoindre différentes invites.
- Apprenez à créer des intérêts en utilisant ChromAdb dans la back de foin.
- Apprenez à mettre en place un système de développement local complet de l'intégration à la génération.
Cet article a été publié dans le cadre du Data Science Blogathon.
Table des matières
- Qu'est-ce qu'un LLM Agent?
- Rag vs Rag de l'agent
- Comprendre les composants du framework Haystack
- Que pouvez-vous construire en utilisant Haystack?
- Haystack Buildstack? Blocks
- Composants
- pipeline
- nœuds
- Graphique de connexion
- Projet RAG de question de question de question pour la physique secondaire
- Environnement du développement
- Document les composants du préprocement de documents Pipeline
- Implémentez un routeur
- Créer des modèles d'invite
- Implémentez le graphique du pipeline de requête
- Draw de la requête
- Question fréquemment posée
- Qu'est-ce qu'un LLM agentique?
Un LLM agentique est un système d'IA qui peut prendre de manière autonome des décisions et prendre des mesures en fonction de sa compréhension de la tâche. Contrairement aux LLM traditionnelles qui génèrent principalement des réponses textuelles, un LLM agentique peut en faire beaucoup plus.
Il peut penser, planifier et agir avec un minimum d'entrée humaine. Il évalue ses connaissances, reconnaissant quand elle a besoin de plus d'informations ou d'outils externes.LLMS AGENTATIQUES Ne comptez pas sur des données statiques ou des connaissances indexées, ils décident plutôt quelles sources à faire confiance et comment rassembler les meilleures idées.
Ce type de système peut également choisir les bons outils pour le travail. Il peut décider quand il doit récupérer des documents, exécuter des calculs ou automatiser les tâches. Ce qui les distingue, c'est sa capacité à décomposer des problèmes complexes en étapes et à les exécuter indépendamment, ce qui la rend précieuse pour la recherche, l'analyse et l'automatisation du flux de travail. Les systèmes de chiffons traditionnels suivent un processus linéaire. Lorsqu'une requête est reçue, le système identifie d'abord les éléments clés de la demande. Il recherche ensuite la base de connaissances, en parcourant des informations pertinentes qui peuvent aider à concevoir une réponse précise. Une fois les informations ou données pertinentes récupérées, le système les traite pour générer une réponse significative et contextuellement pertinente. Vous pouvez comprendre facilement les processus par le diagramme ci-dessous. Maintenant, un système de chiffon agentique améliore ce processus par: La différence clé réside dans la capacité du système à prendre des décisions intelligentes sur la façon de gérer les requêtes, plutôt que de suivre un modèle de génération de récupération fixe. Haystack est un cadre open source pour construire des applications AI prêtes pour la production, LLM, des pipelines de chiffon et des systèmes de recherche. It offre un cadre puissant et flexible pour la construction d'applications LLM. Il vous permet d'intégrer des modèles de diverses plates-formes telles que HuggingFace, Openai, Cohere, Mistral et Olllama local. Vous pouvez également déployer des modèles sur des services cloud comme AWS Sagemaker, Bedrock, Azure et GCP. Haystack fournit des magasins de documents robustes pour une gestion efficace des données. Il est également livré avec un ensemble complet d'outils d'évaluation, de surveillance et d'intégration des données qui garantissent des performances en douceur sur toutes les couches de votre application. Il a également une forte collaboration communautaire qui fait périodiquement une nouvelle intégration de services de divers fournisseurs de services. Haystack a deux concepts principaux pour construire des systèmes Genai LLM entièrement fonctionnels - les composants et les pipelines. Comprenons-les avec un exemple simple de chiffon sur les personnages d'anime japonais Les composants sont les principaux éléments constitutifs de la botte de foin. Ils peuvent effectuer des tâches telles que le stockage de documents, la récupération de documents, la génération de texte et l'intégration. Haystack a de nombreux composants que vous pouvez utiliser directement après l'installation, il fournit également des API pour créer vos propres composants en écrivant une classe Python. Il existe une collection d'intégration des entreprises partenaires et de la communauté. Installez les bibliothèques et définissez Olllama Importez certains composants Créer un document et une boutique de documents sont l'épine dorsale du cadre de Haystack. Ils définissent le flux de données entre les différents composants. Les pipelines sont essentiellement un graphique acyclique dirigé (DAG). Un seul composant avec plusieurs sorties peut se connecter à un autre composant unique avec plusieurs entrées. Vous pouvez définir le pipeline par Vous pouvez visualiser le pipeline Le pipeline fournit: Les nœuds sont les unités de traitement de base qui peuvent être connectées dans un pipeline Ces nœuds sont les composants qui effectuent des tâches spécifiques. Exemples de nœuds du pipeline ci-dessus Le ConnectionGraph définit comment les composants interagissent. À partir du pipeline ci-dessus, vous pouvez visualiser le graphique de connexion. Le graphique de connexion du pipeline d'anime Cette structure graphique: Maintenant, nous pouvons interroger notre base de connaissances d'anime en utilisant l'invite. Créer un modèle d'invite Cette invite fournira une réponse en prenant des informations de la base de documents. requête en utilisant l'invite et le retriever Réponse: Ce chiffon est simple mais conceptuellement précieux pour le nouveau venu. Maintenant que nous avons compris la plupart des concepts des cadres de back de foin, nous pouvons plonger en profondeur dans notre projet principal. Si une nouvelle chose apparaît, je vais expliquer en cours de route. Nous allons construire une question de réponse basée sur les livres de physique NCERT pour les étudiants du secondaire supérieur. Il fournira des réponses à la requête en prenant des informations dans les livres NCERT, et si les informations ne sont pas là, il recherchera le Web pour obtenir ces informations. J'utilise un système gratuit et totalement localisé. nous configurerons un conda env python 3.12 Créez maintenant un répertoire de projet nommé qagent . Vous pouvez utiliser des fichiers Python simples pour le projet ou le cahier Jupyter pour le projet qu'il n'a pas d'importance. J'utiliserai un fichier python ordinaire. Créer un fichier main.py sur la racine du projet. La boutique de documents est la plus importante ici que nous stockons notre intégration pour la récupération, nous utilisons chromadb pour la boutique d'intégration, et comme vous pouvez le voir dans l'exemple précédent, nous utilisons un système robuste de rétrovale Démarrez le système. La solution est une base de données vectorielle telle que Pinode, Weavate, Postgres Vector DB ou ChromAdB. J'utilise chromadb car gratuit, open-source, facile à utiliser et robuste. persist_path est l'endroit où vous souhaitez stocker votre intégration. PDF Fichiers Path Il créera une liste de fichiers à partir du dossier de données qui se compose de nos fichiers PDF. Nous utiliserons le préprocesseur de documents intégré de Haystack tel que le nettoyant, le séparateur et le convertisseur de fichiers, puis utiliser un écrivain pour écrire les données dans le magasin. Nettoyer: Il nettoiera l'espace supplémentaire, les lignes répétées, les lignes vides, etc. à partir des documents. SPIRTER: Il divisera le document de diverses manières telles que les mots, les phrases, le paragraphe, les pages. Convertisseur de fichiers: Il utilisera le PYPDF pour convertir le PDF en documents. Écrivain: Il stockera le document où vous souhaitez stocker les documents et pour les documents en double, il écrasera avec un précédent. Définissez maintenant l'intégration de l'indexation des documents. Embedder: Nomic Embed Text Nous utiliserons l'intégration de texte en ligne nomique qui est très efficace et inhugging face et olllama. Avant d'exécuter votre pipeline d'indexation, ouvrez votre terminal et tapez ci-dessous pour extraire le modèle nomique-texé et LLAMA3.2: 3B du Mollama Model Store et démarrez Olllama en tapant la commande Olllama Serve dans votre terminal Composant intégré maintenant Nous utilisons OLLAMADOCUMEDEMPEDDER Composant pour intégrer des documents, mais si vous souhaitez intégrer la chaîne de texte, vous devez utiliser ollaMatextemBedder. Comme notre précédent exemple de chiffon de jouet, nous commencerons par initier la classe de pipeline. Maintenant, nous allons ajouter les composants à notre pipeline un par un L'ajout de composants au pipeline ne se soucie pas de la commande, vous pouvez donc ajouter des composants dans n'importe quel ordre. Mais la connexion est ce qui compte. Ici, l'ordre compte, car la façon dont vous connectez le composant indique au pipeline comment les données passeront dans le pipeline. C'est comme si cela n'a pas d'importance dans quel ordre ou d'où vous achetez vos articles de plomberie, mais comment les assembler décidera si vous obtenez votre eau ou non. Le convertisseur convertit les PDF et les envoie pour nettoyer le nettoyage. Ensuite, le nettoyeur envoie les documents nettoyés au séparateur pour la chasse. Ces morceaux passeront ensuite aux intégrés pour la vectorisation, et les derniers intégrés remettra ces intérêts à l'écrivain pour le stockage. comprendre! Ok, permettez-moi de vous donner un graphique visuel de l'indexation afin que vous puissiez inspecter le flux de données. Oui, vous pouvez facilement créer un joli graphique de sirène à partir du pipeline de back de foin. Graphique du pipeline d'indexation Je suppose que maintenant vous avez pleinement compris l'idée derrière le pipeline de back de foin. Remerciez votre plombier. Maintenant, nous devons créer un routeur pour acheminer les données à travers un chemin différent. Dans ce cas, nous utiliserons un routeur conditionnel qui fera notre travail de routage dans certaines conditions. Le routeur conditionnel évaluera les conditions en fonction de la sortie des composants. Il dirigera le flux de données à travers différentes branches de pipeline qui permet une prise de décision dynamique. Il aura également des stratégies de secours robustes. Lorsque le système obtient les réponses NO_ANSWER à partir du contexte du magasin d'intégration, il ira aux outils de recherche Web pour collecter des données pertinentes à partir d'Internet. Pour la recherche sur le Web, nous utiliserons API DuckDuckGo ou Tavily, ici j'ai utilisé DuckDuckgo. ok, la plupart des travaux lourds ont été effectués. Maintenant, il est temps pour l'ingénierie rapide Nous utiliserons le composant d'invite de la back de foin pour construire des invites à partir du modèle Tout d'abord, nous créerons une invite pour QA Il faudra le contexte du document et essaiera de répondre à la question. Mais s'il ne trouve pas de contexte pertinent dans les documents, il répondra à No_answer. Maintenant, dans la deuxième invite après avoir obtenu le NO_ANSWER à partir du LLM, le système utilisera les outils de recherche Web pour rassembler le contexte à partir d'Internet. modèle d'invite de DuckDuckgo Il facilitera le système pour aller à la recherche Web et essayer de répondre à la requête. Création d'invite à l'aide d'invite-builder à partir de Haystack Nous utiliserons la menuiseuse de Haystack Invite pour rejoindre les branches de l'invite. Le pipeline de requête intégrera les ressources contextuelles de collecte de requêtes à partir des intégres et répondront à notre requête à l'aide de LLM ou d'outil de recherche Web. Il est similaire au pipeline d'indexation. Ajout de composants au pipeline de requête Ici, pour la génération LLM, nous utilisons le composant OllaMagenerator pour générer des réponses en utilisant LLAMA3.2: 3B ou 1B ou tout ce que vous aimez avec les appels d'outils. Connecter tous les composants ensemble pour le flux de requête et la génération de réponses en résumé de la connexion ci-dessus: Pourquoi ne pas voir par vous-même? Graphique de requête Je sais que c'est un graphique énorme mais cela vous montrera exactement ce qui se passe sous le ventre de la bête. Il est maintenant temps de profiter du fruit de notre travail acharné. Créez une fonction pour la requête facile. C'est une fonction simple simple pour la génération de réponses. exécutez maintenant votre script principal pour indexer le livre de physique NCERT Il s'agit d'un travail unique, après l'indexation, vous devez commenter cette ligne, sinon il commencera à réindexer les livres. et le bas du fichier, nous écrivons notre code de pilote pour la requête MCQ sur la résistivité des connaissances du livre Une autre question qui n'est pas dans le livre sortie essayons une autre question. donc, ça marche! Nous pouvons utiliser plus de données, de livres ou de PDF pour l'intégration qui générera des réponses plus conscientes contextuelles. De plus, les LLM tels que GPT-4O, Claude d'Anthropic ou d'autres LLM cloud feront le travail encore mieux. Notre système de chiffon agentique démontre la flexibilité et la robustesse du cadre de back de foin avec sa puissance de combinaison de composants et de pipelines. Ce chiffon peut être rendu prêt pour la production en se déplaçant sur la plate-forme de service Web et en utilisant également un LLM mieux payé tel que OpenAI et NTHROPIC. Vous pouvez créer une interface utilisateur en utilisant un spa Web Streamlit ou React pour une meilleure expérience utilisateur. Vous pouvez trouver tout le code utilisé dans l'article, ici. Le média montré dans cet article ne appartient pas à l'analyse vidhya et est utilisé à la discrétion de l'auteur . a. Le système utilise son composant de routeur pour se replier automatiquement à la recherche Web lorsque les connaissances locales sont insuffisantes, garantissant une couverture complète. a. L'architecture du pipeline permet un développement modulaire, des tests faciles et une disposition des composants flexibles, ce qui rend le système maintenable et extensible. a. Le graphique de connexion permet des flux de données complexes et un traitement parallèle, améliorant l'efficacité du système et la flexibilité dans la gestion de différents types de requêtes. a. Oui, il est très facile d'installer simplement le package d'intégration nécessaire pour l'API LLM respective tel que les gemini, l'anthropique et le grogne, et l'utiliser avec vos touches API. rag vs rag de l'agent
Comprendre les composants du framework de sac de foin
Que pouvez-vous construire en utilisant la back de foin?
Boucons de back de foin
Composants
$ pip install haystack-ai ollama-haystack
# On you system download Ollama and install LLM
ollama pull llama3.2:3b
ollama pull nomic-embed-text
# And then start ollama server
ollama serve
from haystack import Document, Pipeline
from haystack.components.builders.prompt_builder import PromptBuilder
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.generators.ollama import OllamaGenerator
document_store = InMemoryDocumentStore()
documents = [
Document(
content="Naruto Uzumaki is a ninja from the Hidden Leaf Village and aspires to become Hokage."
),
Document(
content="Luffy is the captain of the Straw Hat Pirates and dreams of finding the One Piece."
),
Document(
content="Goku, a Saiyan warrior, has defended Earth from numerous powerful enemies like Frieza and Cell."
),
Document(
content="Light Yagami finds a mysterious Death Note, which allows him to eliminate people by writing their names."
),
Document(
content="Levi Ackerman is humanity’s strongest soldier, fighting against the Titans to protect mankind."
),
]
pipeline
Les pipelines pipe = Pipeline()
pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
pipe.add_component("prompt_builder", PromptBuilder(template=template))
pipe.add_component(
"llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
)
pipe.connect("retriever", "prompt_builder.documents")
pipe.connect("prompt_builder", "llm")
image_param = {
"format": "img",
"type": "png",
"theme": "forest",
"bgColor": "f2f3f4",
}
pipe.show(params=image_param)
nœuds
pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
pipe.add_component("prompt_builder", PromptBuilder(template=template))
pipe.add_component(
"llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
)
Graphique de connexion
image_param = {
"format": "img",
"type": "png",
"theme": "forest",
"bgColor": "f2f3f4",
}
pipe.show(params=image_param)
template = """
Given only the following information, answer the question.
Ignore your own knowledge.
Context:
{% for document in documents %}
{{ document.content }}
{% endfor %}
Question: {{ query }}?
"""
query = "How Goku eliminate people?"
response = pipe.run({"prompt_builder": {"query": query}, "retriever": {"query": query}})
print(response["llm"]["replies"])
Projet RAG de réponses de questions pour la physique secondaire supérieure
Pour cela, j'utiliserai:
Configuration de l'environnement du développeur
$ pip install haystack-ai ollama-haystack
# On you system download Ollama and install LLM
ollama pull llama3.2:3b
ollama pull nomic-embed-text
# And then start ollama server
ollama serve
Installez le package nécessaire
from haystack import Document, Pipeline
from haystack.components.builders.prompt_builder import PromptBuilder
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.generators.ollama import OllamaGenerator
document_store = InMemoryDocumentStore()
documents = [
Document(
content="Naruto Uzumaki is a ninja from the Hidden Leaf Village and aspires to become Hokage."
),
Document(
content="Luffy is the captain of the Straw Hat Pirates and dreams of finding the One Piece."
),
Document(
content="Goku, a Saiyan warrior, has defended Earth from numerous powerful enemies like Frieza and Cell."
),
Document(
content="Light Yagami finds a mysterious Death Note, which allows him to eliminate people by writing their names."
),
Document(
content="Levi Ackerman is humanity’s strongest soldier, fighting against the Titans to protect mankind."
),
]
Importation de bibliothèques nécessaires
pipe = Pipeline()
pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
pipe.add_component("prompt_builder", PromptBuilder(template=template))
pipe.add_component(
"llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
)
pipe.connect("retriever", "prompt_builder.documents")
pipe.connect("prompt_builder", "llm")
image_param = {
"format": "img",
"type": "png",
"theme": "forest",
"bgColor": "f2f3f4",
}
pipe.show(params=image_param)
pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
pipe.add_component("prompt_builder", PromptBuilder(template=template))
pipe.add_component(
"llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
)
image_param = {
"format": "img",
"type": "png",
"theme": "forest",
"bgColor": "f2f3f4",
}
pipe.show(params=image_param)
template = """
Given only the following information, answer the question.
Ignore your own knowledge.
Context:
{% for document in documents %}
{{ document.content }}
{% endfor %}
Question: {{ query }}?
"""
Création d'une boutique de documents
query = "How Goku eliminate people?"
response = pipe.run({"prompt_builder": {"query": query}, "retriever": {"query": query}})
print(response["llm"]["replies"])
$conda create --name agenticlm python=3.12
$conda activate agenticlm
Composants de prétraitement de document
$pip install haystack-ai ollama-haystack pypdf
$pip install chroma-haystack duckduckgo-api-haystack
$md qagent # create dir
$cd qagent # change to dir
$ code . # open folder in vscode
$ pip install haystack-ai ollama-haystack
# On you system download Ollama and install LLM
ollama pull llama3.2:3b
ollama pull nomic-embed-text
# And then start ollama server
ollama serve
from haystack import Document, Pipeline
from haystack.components.builders.prompt_builder import PromptBuilder
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.generators.ollama import OllamaGenerator
document_store = InMemoryDocumentStore()
documents = [
Document(
content="Naruto Uzumaki is a ninja from the Hidden Leaf Village and aspires to become Hokage."
),
Document(
content="Luffy is the captain of the Straw Hat Pirates and dreams of finding the One Piece."
),
Document(
content="Goku, a Saiyan warrior, has defended Earth from numerous powerful enemies like Frieza and Cell."
),
Document(
content="Light Yagami finds a mysterious Death Note, which allows him to eliminate people by writing their names."
),
Document(
content="Levi Ackerman is humanity’s strongest soldier, fighting against the Titans to protect mankind."
),
]
pipe = Pipeline()
pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
pipe.add_component("prompt_builder", PromptBuilder(template=template))
pipe.add_component(
"llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
)
pipe.connect("retriever", "prompt_builder.documents")
pipe.connect("prompt_builder", "llm")
Création du pipeline d'indexation
image_param = {
"format": "img",
"type": "png",
"theme": "forest",
"bgColor": "f2f3f4",
}
pipe.show(params=image_param)
pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
pipe.add_component("prompt_builder", PromptBuilder(template=template))
pipe.add_component(
"llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
)
Connexion des composants au graphique du pipeline
image_param = {
"format": "img",
"type": "png",
"theme": "forest",
"bgColor": "f2f3f4",
}
pipe.show(params=image_param)
Draw Pipeline d'indexation
template = """
Given only the following information, answer the question.
Ignore your own knowledge.
Context:
{% for document in documents %}
{{ document.content }}
{% endfor %}
Question: {{ query }}?
"""
Implémentez un routeur
$ pip install haystack-ai ollama-haystack
# On you system download Ollama and install LLM
ollama pull llama3.2:3b
ollama pull nomic-embed-text
# And then start ollama server
ollama serve
from haystack import Document, Pipeline
from haystack.components.builders.prompt_builder import PromptBuilder
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.generators.ollama import OllamaGenerator
Créer des modèles d'invite
document_store = InMemoryDocumentStore()
documents = [
Document(
content="Naruto Uzumaki is a ninja from the Hidden Leaf Village and aspires to become Hokage."
),
Document(
content="Luffy is the captain of the Straw Hat Pirates and dreams of finding the One Piece."
),
Document(
content="Goku, a Saiyan warrior, has defended Earth from numerous powerful enemies like Frieza and Cell."
),
Document(
content="Light Yagami finds a mysterious Death Note, which allows him to eliminate people by writing their names."
),
Document(
content="Levi Ackerman is humanity’s strongest soldier, fighting against the Titans to protect mankind."
),
]
pipe = Pipeline()
pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
pipe.add_component("prompt_builder", PromptBuilder(template=template))
pipe.add_component(
"llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
)
pipe.connect("retriever", "prompt_builder.documents")
pipe.connect("prompt_builder", "llm")
image_param = {
"format": "img",
"type": "png",
"theme": "forest",
"bgColor": "f2f3f4",
}
pipe.show(params=image_param)
pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
pipe.add_component("prompt_builder", PromptBuilder(template=template))
pipe.add_component(
"llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
)
Implémentez le pipeline de requête
Pipeline de lancement
image_param = {
"format": "img",
"type": "png",
"theme": "forest",
"bgColor": "f2f3f4",
}
pipe.show(params=image_param)
template = """
Given only the following information, answer the question.
Ignore your own knowledge.
Context:
{% for document in documents %}
{{ document.content }}
{% endfor %}
Question: {{ query }}?
"""
query = "How Goku eliminate people?"
response = pipe.run({"prompt_builder": {"query": query}, "retriever": {"query": query}})
print(response["llm"]["replies"])
Draw Graphique du pipeline de requête
$conda create --name agenticlm python=3.12
$conda activate agenticlm
$ pip install haystack-ai ollama-haystack
# On you system download Ollama and install LLM
ollama pull llama3.2:3b
ollama pull nomic-embed-text
# And then start ollama server
ollama serve
from haystack import Document, Pipeline
from haystack.components.builders.prompt_builder import PromptBuilder
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.generators.ollama import OllamaGenerator
document_store = InMemoryDocumentStore()
documents = [
Document(
content="Naruto Uzumaki is a ninja from the Hidden Leaf Village and aspires to become Hokage."
),
Document(
content="Luffy is the captain of the Straw Hat Pirates and dreams of finding the One Piece."
),
Document(
content="Goku, a Saiyan warrior, has defended Earth from numerous powerful enemies like Frieza and Cell."
),
Document(
content="Light Yagami finds a mysterious Death Note, which allows him to eliminate people by writing their names."
),
Document(
content="Levi Ackerman is humanity’s strongest soldier, fighting against the Titans to protect mankind."
),
]
pipe = Pipeline()
pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
pipe.add_component("prompt_builder", PromptBuilder(template=template))
pipe.add_component(
"llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
)
pipe.connect("retriever", "prompt_builder.documents")
pipe.connect("prompt_builder", "llm")
image_param = {
"format": "img",
"type": "png",
"theme": "forest",
"bgColor": "f2f3f4",
}
pipe.show(params=image_param)
Conclusion
Les plats clés
question fréquemment posée
Q1. Comment le système gère-t-il les requêtes inconnues?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

L'IA rationalise la récupération des incendies de forêt Le logiciel AI de la société de technologie australienne Archistar, utilisant l'apprentissage automatique et la vision par ordinateur, automatise l'évaluation des plans de construction de conformité aux réglementations locales. Cette signification de pré-validation

Le gouvernement numérique de l'Estonie: un modèle pour les États-Unis? Les États-Unis luttent contre les inefficacités bureaucratiques, mais l'Estonie offre une alternative convaincante. Cette petite nation possède un gouvernement de près de 100% numérisé et centré sur les citoyens alimentés par l'IA. Ce n'est pas

Planifier un mariage est une tâche monumentale, souvent écrasante même les couples les plus organisés. Cet article, qui fait partie d'une série Forbes en cours sur l'impact de l'IA (voir le lien ici), explore comment l'IA génératrice peut révolutionner la planification de mariage. Le mariage PL

Les entreprises exploitent de plus en plus les agents de l'IA pour les ventes, tandis que les gouvernements les utilisent pour diverses tâches établies. Cependant, les défenseurs des consommateurs mettent en évidence la nécessité pour les individus de posséder leurs propres agents d'IA comme une défense contre les

Google mène ce changement. Sa fonction "AI AperSews" sert déjà plus d'un milliard d'utilisateurs, fournissant des réponses complètes avant que quiconque clique sur un lien. [^ 2] D'autres joueurs gagnent également du terrain rapidement. Chatgpt, Microsoft Copilot et PE

En 2022, il a fondé la startup de défense de l'ingénierie sociale Doppel pour faire exactement cela. Et alors que les cybercriminels exploitent des modèles d'IA de plus en plus avancés pour turbuler leurs attaques, les systèmes d'IA de Doppel ont aidé les entreprises à les combattre à grande échelle - plus rapidement et

Le tour est joué, via l'interaction avec les modèles mondiaux appropriés, l'IA et les LLM génératives peuvent être considérablement stimulées. Parlons-en. Cette analyse d'une percée innovante de l'IA fait partie de ma couverture de colonne Forbes en cours sur la dernière IA, y compris

La fête du Travail 2050. Les parcs à travers le pays se remplissent de familles bénéficiant de barbecues traditionnelles tandis que les défilés nostalgiques vont dans les rues de la ville. Pourtant, la célébration porte désormais une qualité de musée - une reconstitution historique plutôt que la commémoration de C


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.
