Récupération intelligente de connaissances avec LangChain : Mécanisme d'exécution AgentExecutor, intégration de Wikipédia et contrôle des jetons contextuels

Introduction aux mécanismes de récupération de connaissances

Ce guide présente un processus avancé de recherche et de traitement de connaissances impliquant plusieurs éléments clés :

  1. Utliisation d'outils de recherche encyclopédique :
  • Le système intègre un plugin de recherche encyclopédique prêt à l'emploi pour les requêtes de connaissance
  • Le plugin prend en charge divers modes de recherche, y compris la recherche par mots-clés et la recherche par catégorie
  • Exemple : pour obtenir des informations sur "l'informatique quantique", on peut directement appeler le plugin avec recherche_wikipedia("informatique quantique")
  1. Mécanisme d'exécution AgentExecutor :
  • Utilisation de AgentExecutor comme contrôleur central pour l'exécution des tâches
  • AgentExecutor coordonne le workflow entre les différents composants
  • Fonctionnalités principales :
  • Réception et analyse des requêtes utilisateur
  • Appel des outils de recherche appropriés
  • Traitement des résultats de recherche retournés
  • Gestion de l'état du processus d'exécution
  1. Contrôle de la longueur du contexte :
  • À mesure que le contenu de recherche augmente, le contexte peut devenir trop volumineux
  • Calcul précis de nombre_jetons pour surveiller le nombre de jetons du contexte
  • Méthodes d'implémentation :
  • Utilisation d'un tokenizer spécialisé pour calculer le nombre de jetons du texte
  • Définition de seuils de longueur de contexte raisonnables (généralement 2048 ou 4096 jetons)
  • Stratégies de dépassement des seuils :
  • Conservation prioritaire des informations les plus pertinentes
  • Résumé des contenus trop longs
  • Abandon d'informations secondaires si nécessaire
  1. Exemple de workflow :
1. L'utilisateur lance une requête de recherche
2. AgentExecutor reçoit et analyse la requête
3. Appel du plugin de recherche Wikipédia pour obtenir les résultats bruts
4. Calcul du nombre de jetons du contenu retourné
5. Si le nombre dépasse le seuil, réduction du contenu
6. Retour des résultats finaux traités

  1. Cas d'utilisation :
  • Systèmes de questions-réponses pour les problèmes à domaine ouvert
  • Complément d'information lors de la construction de graphes de connaissances
  • Scénarios nécessitant un équilibre entre intégrité de l'information et efficacité de traitement

Installation des dépendances

pip install --upgrade --quiet langchain langchain-openai wikipedia

Implémentation du code

# Initialisation de l'outil Wikipédia avec un wrapper pour les requêtes
source_wiki = WikipediaQueryRun(
    api_wrapper=WikipediaAPIWrapper(top_k_results=5, doc_content_chars_max=10_000)
)
outils = [source_wiki]

modele_prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "Vous êtes un assistant utile"),
        ("user", "{entree}"),
        MessagesPlaceholder(variable_name="agent_scratchpad"),
    ]
)
modele_langage = ChatOpenAI(model="gpt-4-0125-preview")

# Fonction pour contrôler la taille du contexte
def reduire_prompt(prompt: ChatPromptValue) -> ChatPromptValue:
    messages = prompt.to_messages()
    nombre_jetons = modele_langage.get_num_tokens_from_messages(messages)
    messages_fonction = messages[2:]
    
    # Réduction itérative jusqu'à respect de la limite
    while nombre_jetons > 4_000:
        messages_fonction = messages_fonction[2:]
        nombre_jetons = modele_langage.get_num_tokens_from_messages(
            messages[:2] + messages_fonction
        )
    
    messages = messages[:2] + messages_fonction
    return ChatPromptValue(messages=messages)

# Création de l'agent avec réduction de contexte
agent = (
    {
        "entree": itemgetter("entree"),
        "agent_scratchpad": lambda x: format_to_openai_function_messages(
            x["etapes_intermediaires"]
        ),
    }
    | modele_prompt
    | reduire_prompt
    | modele_langage.bind_functions(outils)
    | OpenAIFunctionsAgentOutputParser()
)

executeur_agent = AgentExecutor(agent=agent, outils=outils, verbose=True)

# Exécution d'une requête sur un modèle de langage
executeur_agent.invoke(
    {
        "entree": "Qu'est-ce que le modèle de langage Grok ? Qui est son développeur ? Quelles autres contributions a-t-il réalisées ? Grok est-il un modèle open source ? Si oui, quand a-t-il été ouvert ?"
    }
)

Résultats d'exécution

> Entrée dans une nouvelle chaîne AgentExecutor...

Appel de `wikipedia` avec `Grok modèle de langage`


Page: Grok (chatbot)
......



Page: Modèle de langage de grande taille
...... modèles open source, les modèles Claude d'Anthropic et les modèles open source de Mistral AI.

Page: Gemini (modèle de langage)
Résumé : Gemini est une famille de modèles de langage multimodaux développés par Google DeepMind, successeur de LaMDA et PaLM 2. Composé de Gemini Ultra, Gemini Pro et Gemini Nano, il a été annoncé le 6 décembre 2023, positionné comme un concurrent de GPT-4 d'OpenAI. Il alimente le chatbot d'intelligence artificielle générative du même nom.

Page: Modèle de langage
......

Page: ChatGPT
......
ChatGPT est crédité d'avoir déclenché le boom de l'IA, ce qui a conduit à des investissements rapides et sans précédent et à une attention publique continue dans le domaine ......
Elon Musk est un entrepreneur et ingénieur connu, qui a fondé ou dirigé plusieurs entreprises technologiques et spatiales notables, dont SpaceX, Tesla Inc., Neuralink et The Boring Company. Il a contribué de manière significative à l'exploration spatiale, au développement de véhicules électriques et au domaine de l'intelligence artificielle.

> Fin de la chaîne.


L'Agent a aidé à exécuter et résumer les résultats :

Grok est un chatbot d'intelligence artificielle générative basé sur un modèle de langage de grande taille (LLM), développé par xAI. Le développement de Grok a été initié par Elon Musk en réponse directe à l'émergence de ChatGPT d'OpenAI, dont Elon Musk est le cofondateur. Une caractéristique de Grok est qu'il est présenté comme "ayant un sens de l'humour" et ayant un accès direct à Twitter (maintenant X). Actuellement, Grok est toujours en phase de test bêta, accessible uniquement aux utilisateurs premium de X.

Concernant le statut open source de Grok, les informations actuelles ne mentionnent pas que Grok est un projet open source. Le fait qu'un modèle soit open source et le moment de son ouverture sont généralement décidés par l'organisation ou l'équipe qui le développe. Pour connaître le statut exact d'open source de Grok, il faudrait probablement consulter directement xAI ou les communications officielles pertinentes.

Elon Musk est un entrepreneur et ingénieur connu, qui a fondé ou dirigé plusieurs entreprises technologiques et spatiales notables, dont SpaceX, Tesla Inc., Neuralink et The Boring Company. Il a contribué de manière significative à l'exploration spatiale, au développement de véhicules électriques et au domaine de l'intelligence artificielle.


Considérations de coût

En raison de la taille importante du contexte, les coûts d'utilisation peuvent être considérables.

Optimisation du code

La fonction reduire_prompt a été conçue pour calculer et contrôler la longueur du contexte dans les scénarios de conversation longue. Cette fonction résout principalement le problème de gestion du contexte dans les conversations longues, avec des fonctions clés incluant :

  1. Mécanisme de compression de contexte :
  • Utilisation d'un algorithme de fenêtre glissante pour conserver les N derniers tours de conversation
  • Analyse sémantique des conversations historiques pour extraire les points d'information clés
  • Fusion automatique des contenus de conversation sur des sujets similaires
  1. Stratégie de troncation intelliegnte :
  • Lorsque le contexte dépasse la limite de jetons
  • Conservation prioritaire des informations historiques les plus pertinentes par rapport à la conversation actuelle
  • Protection spéciale des entités importantes et des concepts clés
  1. Fonction d'ajustement dynamique :
  • Ajustement automatique du ratio de compression en fonction du domaine de conversation
  • Application d'un taux de compression plus faible pour les contenus techniques
  • Application d'un taux de compression plus élevé pour les conversations informelles

Paramètres de configuration de la fonction :

longueur_max=4096  # Longueur maximale du contexte
ratio_preservation=0.3  # Ratio de préservation des informations clés
conservation_min=3  # Nombre minimum de tours de conversation à conserver

Étiquettes: langchain AgentExecutor Wikipédia LLM traitement du contexte

Publié le 15 juin à 23h11