Dans cet article, nous explorerons comment créer des agents d'IA pour la recherche sur le Web, l'analyse financière, le raisonnement et la génération augmentée par récupération à l'aide de phidata et du LLM local Ollama. Le code utilise le modèle lama3.2. Si vous souhaitez utiliser un modèle différent, vous devrez télécharger le modèle que vous souhaitez utiliser et remplacer la variable model_id dans le code.
Qu’est-ce que Phidata ?
Une plateforme open source pour créer, expédier et surveiller des systèmes agentiques.
https://www.phidata.com/
Qu’est-ce qu’Ollama ?
Ollama est une plateforme et un ensemble d'outils conçus pour simplifier le déploiement et l'utilisation de grands modèles linguistiques locaux (LLM).
https://ollama.ai/
Dans cet article, nous utiliserons le modèle lama3.2.
ollama pull llama3.2
Qu’est-ce que les UV ?
Un package Python extrêmement rapide et un gestionnaire de projet, écrit en Rust.
https://github.com/astral-sh/uv
Si vous ne souhaitez pas utiliser uv, vous pouvez utiliser pip au lieu de uv. Ensuite, vous devrez utiliser pip install au lieu de uv add.
Comment installer UV
https://docs.astral.sh/uv/getting-started/installation/
Créer un dossier de projet
Si vous décidez d'utiliser pip, vous devrez créer un dossier de projet.
uv init phidata-ollama
Installer les dépendances
uv add phidata ollama duckduckgo-search yfinance pypdf lancedb tantivy sqlalchemy
Dans cet article, nous allons essayer de créer 5 agents IA avec phidata et Ollama.
Remarque : Avant de commencer, assurez-vous que votre serveur ollama est en cours d'exécution en exécutant ollama serve.
Créer un agent de recherche Web
Le premier agent que nous allons créer est un agent de recherche Web qui utilisera le moteur de recherche DuckDuckGo.
from phi.agent import Agent from phi.model.ollama import Ollama from phi.tools.duckduckgo import DuckDuckGo model_id = "llama3.2" model = Ollama(id=model_id) web_agent = Agent( name="Web Agent", model=model, tools=[DuckDuckGo()], instructions=["Always include sources"], show_tool_calls=True, markdown=True, ) web_agent.print_response("Tell me about OpenAI Sora?", stream=True)
Sortie :
┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ Tell me about OpenAI Sora? ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┏━ Response (12.0s) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ • Running: duckduckgo_news(query=OpenAI Sora) ┃ ┃ ┃ ┃ OpenAI's Sora is a video-generating model that has been trained on ┃ ┃ copyrighted content, which has raised concerns about its legality. ┃ ┃ According to TechCrunch, it appears that OpenAI trained Sora on game ┃ ┃ content, which could be a problem. Additionally, MSN reported that the ┃ ┃ model doesn't feel like the game-changer it was supposed to be. ┃ ┃ ┃ ┃ In other news, Yahoo reported that when asked to generate gymnastics ┃ ┃ videos, Sora produces horrorshow videos with whirling and morphing ┃ ┃ limbs. A lawyer told ExtremeTech that it's "overwhelmingly likely" that ┃ ┃ copyrighted materials are included in Sora's training dataset. ┃ ┃ ┃ ┃ Geeky Gadgets reviewed OpenAI's Sora, stating that while it is included ┃ ┃ in the 0/month Pro Plan, its standalone value for video generation ┃ ┃ is less clear compared to other options. ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
Créer un agent financier
Le deuxième agent que nous allons créer est un agent financier qui utilisera les outils yfinance.
from phi.agent import Agent from phi.model.ollama import Ollama from phi.tools.yfinance import YFinanceTools model_id = "llama3.2" model = Ollama(id=model_id) finance_agent = Agent( name="Finance Agent", model=model, tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True, company_news=True)], instructions=["Use tables to display data"], show_tool_calls=True, markdown=True, ) finance_agent.print_response("Summarize analyst recommendations for NVDA", stream=True)
Sortie :
┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ Summarize analyst recommendations for NVDA ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┏━ Response (3.9s) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ • Running: get_analyst_recommendations(symbol=NVDA) ┃ ┃ ┃ ┃ Based on the analyst recommendations, here is a summary: ┃ ┃ ┃ ┃ • The overall sentiment is bullish, with 12 strong buy and buy ┃ ┃ recommendations. ┃ ┃ • There are no strong sell or sell recommendations. ┃ ┃ • The average price target for NVDA is around 0-0. ┃ ┃ • Analysts expect NVDA to continue its growth trajectory, driven by ┃ ┃ its strong products and services in the tech industry. ┃ ┃ ┃ ┃ Please note that these recommendations are subject to change and may ┃ ┃ not reflect the current market situation. It's always a good idea to do ┃ ┃ your own research and consult with a financial advisor before making ┃ ┃ any investment decisions. ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
Créer une équipe d'agents
Le troisième agent que nous allons créer est une équipe d'agents qui utilisera le moteur de recherche DuckDuckGo et les outils YFinance.
from phi.agent import Agent from phi.model.ollama import Ollama from phi.tools.duckduckgo import DuckDuckGo from phi.tools.yfinance import YFinanceTools web_instructions = 'Always include sources' finance_instructions = 'Use tables to display data' model_id = "llama3.2" model = Ollama(id=model_id) web_agent = Agent( name="Web Agent", role="Search the web for information", model=model, tools=[DuckDuckGo()], instructions=[web_instructions], show_tool_calls=True, markdown=True, ) finance_agent = Agent( name="Finance Agent", role="Get financial data", model=model, tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True)], instructions=[finance_instructions], show_tool_calls=True, markdown=True, ) agent_team = Agent( model=model, team=[web_agent, finance_agent], instructions=[web_instructions, finance_instructions], show_tool_calls=True, markdown=True, ) agent_team.print_response("Summarize analyst recommendations and share the latest news for NVDA", stream=True)
Créer un agent d'inférence
Le quatrième agent que nous allons créer est un agent d'inférence qui va utiliser une tâche.
from phi.agent import Agent from phi.model.ollama import Ollama model_id = "llama3.2" model = Ollama(id=model_id) task = ( "Three missionaries and three cannibals want to cross a river." "There is a boat that can carry up to two people, but if the number of cannibals exceeds the number of missionaries, the missionaries will be eaten." ) reasoning_agent = Agent(model=model, reasoning=True, markdown=True, structured_outputs=True) reasoning_agent.print_response(task, stream=True, show_full_reasoning=True)
Sortie :
┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ Three missionaries and three cannibals want to cross a river.There is a ┃ ┃ boat that can carry up to two people, but if the number of cannibals ┃ ┃ exceeds the number of missionaries, the missionaries will be eaten. ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ [Reasoning steps and output as in the original document]
Créer un agent RAG
Le cinquième agent que nous allons créer est un agent RAG qui utilisera une base de connaissances PDF et une base de données vectorielle LanceDB.
from phi.agent import Agent from phi.model.openai import OpenAIChat from phi.embedder.openai import OpenAIEmbedder from phi.embedder.ollama import OllamaEmbedder from phi.model.ollama import Ollama from phi.knowledge.pdf import PDFUrlKnowledgeBase from phi.vectordb.lancedb import LanceDb, SearchType model_id = "llama3.2" model = Ollama(id=model_id) embeddings = OllamaEmbedder().get_embedding("The quick brown fox jumps over the lazy dog.") knowledge_base = PDFUrlKnowledgeBase( urls=["https://phi-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"], vector_db=LanceDb( table_name="recipes", uri="tmp/lancedb", search_type=SearchType.vector, embedder=OllamaEmbedder(), ), ) knowledge_base.load() agent = Agent( model=model, knowledge=knowledge_base, show_tool_calls=True, markdown=True, ) agent.print_response("Please tell me how to make green curry.", stream=True)
Sortie :
uv run rag_agent.py WARNING model "openhermes" not found, try pulling it first WARNING model "openhermes" not found, try pulling it first INFO Creating collection INFO Loading knowledge base INFO Reading: https://phi-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf WARNING model "openhermes" not found, try pulling it first WARNING model "openhermes" not found, try pulling it first WARNING model "openhermes" not found, try pulling it first WARNING model "openhermes" not found, try pulling it first WARNING model "openhermes" not found, try pulling it first WARNING model "openhermes" not found, try pulling it first WARNING model "openhermes" not found, try pulling it first WARNING model "openhermes" not found, try pulling it first WARNING model "openhermes" not found, try pulling it first WARNING model "openhermes" not found, try pulling it first WARNING model "openhermes" not found, try pulling it first WARNING model "openhermes" not found, try pulling it first WARNING model "openhermes" not found, try pulling it first WARNING model "openhermes" not found, try pulling it first INFO Added 14 documents to knowledge base WARNING model "openhermes" not found, try pulling it first ERROR Error searching for documents: list index out of range ┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ Please tell me how to make green curry. ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┏━ Response (5.4s) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ • Running: search_knowledge_base(query=green curry recipe) ┃ ┃ ┃ ┃ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ Green Curry Recipe ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┃ ┃ ┃ ┃ ** Servings: 4-6 people** ┃ ┃ ┃ ┃ Ingredients: ┃ ┃ ┃ ┃ • 2 tablespoons vegetable oil ┃ ┃ • 2 cloves garlic, minced ┃ ┃ • 1 tablespoon grated fresh ginger ┃ ┃ • 2 tablespoons Thai red curry paste ┃ ┃ • 2 cups coconut milk ┃ ┃ • 1 cup mixed vegetables (such as bell peppers, bamboo shoots, and ┃ ┃ Thai eggplant) ┃ ┃ • 1 pound boneless, skinless chicken breasts or thighs, cut into ┃ ┃ bite-sized pieces ┃ ┃ • 2 tablespoons fish sauce ┃ ┃ • 1 tablespoon palm sugar ┃ ┃ • 1/4 teaspoon ground white pepper ┃ ┃ • Salt to taste ┃ ┃ • Fresh basil leaves for garnish ┃ ┃ ┃ ┃ Instructions: ┃ ┃ ┃ ┃ 1 Prepare the curry paste: In a blender or food processor, combine the ┃ ┃ curry paste, garlic, ginger, fish sauce, palm sugar, and white ┃ ┃ pepper. Blend until smooth. ┃ ┃ 2 Heat oil in a pan: Heat the oil in a large skillet or Dutch oven ┃ ┃ over medium-high heat. ┃ ┃ 3 Add the curry paste: Pour the blended curry paste into the hot oil ┃ ┃ and stir constantly for 1-2 minutes, until fragrant. ┃ ┃ 4 Add coconut milk: Pour in the coconut milk and bring the mixture to ┃ ┃ a simmer. ┃ ┃ 5 Add vegetables and chicken: Add the mixed vegetables and chicken ┃ ┃ pieces to the pan. Stir gently to combine. ┃ ┃ 6 Reduce heat and cook: Reduce the heat to medium-low and let the ┃ ┃ curry simmer, uncovered, for 20-25 minutes or until the chicken is ┃ ┃ cooked through and the sauce has thickened. ┃ ┃ 7 Season with salt and taste: Season the curry with salt to taste. ┃ ┃ Serve hot garnished with fresh basil leaves. ┃ ┃ ┃ ┃ Tips and Variations: ┃ ┃ ┃ ┃ • Adjust the level of spiciness by using more or less Thai red curry ┃ ┃ paste. ┃ ┃ • Add other protein sources like shrimp, tofu, or tempeh for a ┃ ┃ vegetarian or vegan option. ┃ ┃ • Experiment with different vegetables, such as zucchini or carrots, ┃ ┃ to add variety. ┃ ┃ ┃ ┃ Tools Used: Python ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
Conclusion
Dans cet article, nous avons exploré comment créer des agents d'IA pour la recherche sur le Web, l'analyse financière, le raisonnement et la génération augmentée par récupération à l'aide de phidata et du LLM local Ollama.
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!

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Cet article explique comment utiliser la belle soupe, une bibliothèque Python, pour analyser HTML. Il détaille des méthodes courantes comme find (), find_all (), select () et get_text () pour l'extraction des données, la gestion de diverses structures et erreurs HTML et alternatives (Sel

Cet article compare TensorFlow et Pytorch pour l'apprentissage en profondeur. Il détaille les étapes impliquées: préparation des données, construction de modèles, formation, évaluation et déploiement. Différences clés entre les cadres, en particulier en ce qui concerne le raisin informatique

Lorsque vous utilisez la bibliothèque Pandas de Python, comment copier des colonnes entières entre deux frames de données avec différentes structures est un problème courant. Supposons que nous ayons deux dats ...

L'article traite des bibliothèques Python populaires comme Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask et Demandes, détaillant leurs utilisations dans le calcul scientifique, l'analyse des données, la visualisation, l'apprentissage automatique, le développement Web et H et H

Cet article guide les développeurs Python sur la construction d'interfaces de ligne de commande (CLI). Il détaille à l'aide de bibliothèques comme Typer, Click et Argparse, mettant l'accent sur la gestion des entrées / sorties et promouvant des modèles de conception conviviaux pour une meilleure convivialité par la CLI.

L'article traite du rôle des environnements virtuels dans Python, en se concentrant sur la gestion des dépendances du projet et l'évitement des conflits. Il détaille leur création, leur activation et leurs avantages pour améliorer la gestion de projet et réduire les problèmes de dépendance.

Les expressions régulières sont des outils puissants pour la correspondance des motifs et la manipulation du texte dans la programmation, améliorant l'efficacité du traitement de texte sur diverses applications.


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

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

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

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

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