Ce didacticiel montre la construction d'un agent d'interface utilisateur conversationnel polyvalent utilisant Langchain, un cadre puissant qui intègre de grands modèles de langage (LLM) avec des outils externes et des API. Cet agent peut effectuer diverses tâches, de la génération de nombres aléatoires et de l'offre de réflexions philosophiques à la récupération et au traitement dynamiquement des informations à partir des pages Web. La combinaison d'outils prédéfinis et personnalisés permet des réponses en temps réel, conscient et informatives.
* Cet article fait partie du *** Data Science Blogathon.
Tool
pour le grattage WebLa synergie de Langchain, Openai et DuckDuckgo permet une IA conversationnelle sophistiquée. Les LLM d'OpenAI fournissent un traitement du langage naturel, tandis que DuckDuckgo propose une API de recherche axée sur la confidentialité. Cette combinaison permet à l'IA de générer des réponses contextuellement pertinentes et de récupérer des données en temps réel, en améliorant son adaptabilité et sa précision. Cette puissante boîte à outils est idéale pour créer des chatbots intelligents ou des assistants virtuels capables de gérer diverses demandes d'utilisateurs.
Commencez par installer des packages Python requis à l'aide de PIP:
<code>!pip -q install langchain==0.3.4 openai pip install langchain !pip -q install duckduckgo-search</code>
Vérifiez l'installation de Langchain:
<code>!pip show langchain</code>
Obtenez votre clé API OpenAI et définissez-la comme une variable d'environnement:
<code>import os os.environ["OPENAI_API_KEY"] = "your_openai_key_here"</code>
Remplacez "your_openai_key_here"
par votre clé réelle. Ceci est crucial pour interagir avec le modèle GPT-3.5-turbo.
Établir une connexion au modèle d'Openai à l'aide de Langchain:
<code>from langchain import OpenAI from langchain.chat_models import ChatOpenAI from langchain.chains.conversation.memory import ConversationBufferWindowMemory # Configure the GPT-4o LLM turbo_llm = ChatOpenAI( temperature=0, model_name='gpt-4o' )</code>
Une basse température (température = 0) assure des réponses cohérentes.
Améliorez les capacités de votre agent en ajoutant l'outil de recherche DuckDuckgo:
<code>from langchain.tools import DuckDuckGoSearchTool from langchain.agents import Tool from langchain.tools import BaseTool search = DuckDuckGoSearchTool() # Define the tool tools = [ Tool( name = "search", func=search.run, description="Best for questions about current events. Use precise queries." ) ]</code>
Cet outil, décrit comme idéal pour les événements actuels, est ajouté à la boîte à outils de l'agent.
Étendez les fonctionnalités de votre agent avec des outils personnalisés:
Cette fonction fournit une réponse ludique à la question du sens de la vie:
<code>def meaning_of_life(input=""): return 'The meaning of life is 42 (approximately!)' life_tool = Tool( name='Meaning of Life', func= meaning_of_life, description="Use for questions about the meaning of life. Input: 'MOL'" )</code>
Cet outil génère des entiers aléatoires entre 0 et 5:
<code>import random def random_num(input=""): return random.randint(0,5) random_tool = Tool( name='Random number', func= random_num, description="Use to get a random number. Input: 'random'" )</code>
La création d'un agent conversationnel avec des outils personnalisés permet des interactions hautement sur mesure.
Importez initialize_agent
et définissez les outils:
<code>from langchain.agents import initialize_agent tools = [search, random_tool, life_tool]</code>
Implémentez la mémoire à l'aide de ConversationBufferWindowMemory
:
<code>from langchain.chains.conversation.memory import ConversationBufferWindowMemory memory = ConversationBufferWindowMemory( memory_key='chat_history', k=3, return_messages=True )</code>
Cela permet à l'agent de rappeler que les tours de conversation récents (jusqu'à 3).
Initialiser l'agent:
<code>conversational_agent = initialize_agent( agent='chat-conversational-react-description', tools=tools, llm=turbo_llm, verbose=True, max_iterations=3, early_stopping_method='generate', memory=memory )</code>
Les paramètres spécifient le type d'agent, les outils, le LLM, la verbosité, la limite d'itération, l'arrêt précoce et la mémoire.
Interagir avec l'agent:
<code>conversational_agent("What time is it in London?") conversational_agent("Can you give me a random number?") conversational_agent("What is the meaning of life?")</code>
Affinez le comportement de l'agent en ajustant l'invite du système:
<code># system prompt conversational_agent.agent.llm_chain.prompt.messages[0].prompt.template</code>
<code>fixed_prompt = '''Assistant is a large language model... [modified prompt instructing the agent to use tools appropriately]'''</code>
Appliquer l'invite modifiée:
<code>conversational_agent.agent.llm_chain.prompt.messages[0].prompt.template = fixed_prompt</code>
Retester l'agent.
Tool
pour le grattage WebCréez un outil personnalisé pour extraire du texte brut à partir des pages Web:
<code>from bs4 import BeautifulSoup import requests from langchain.agents import Tool def stripped_webpage(webpage): # ... (function to fetch and clean webpage text) ... web_scraper_tool = Tool( name='Web Scraper', func=stripped_webpage, description="Fetches and cleans webpage text (limited to 4000 characters)." )</code>
Intégrez cet outil dans votre agent.
WebPageTool
Une solution plus robuste consiste à créer une classe WebPageTool
personnalisée:
De Langchain.tools Import Basetool De BS4 Import BeautifulSoup Demandes d'importation Classe WebPageTool (Basetool): # ... (définition de classe comme dans la réponse originale) ...
Réinitialiser l'agent avec le nouvel outil et l'invite du système mis à jour. Tester avec des exemples comme:
Conversational_agent.run ("Y a-t-il un article sur Clubhouse sur https://techcrunch.com/? Aujourd'hui") Conversational_agent.run ("Quelles sont les meilleures histoires sur www.cbsnews.com/?")
Ce tutoriel montre la construction d'un agent conversationnel très adaptable à l'aide de Langchain. La conception modulaire permet une expansion et une personnalisation faciles. Cet agent présente la puissance de la combinaison de l'IA avec l'accès aux données en temps réel.
(Même FAQ que dans la réponse originale, reformulé pour un meilleur flux et une meilleure concision.)
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!