Mis à jour le 25 sept. 2025
8 min
# pip install langchain langchain-openaifrom langchain_openai import ChatOpenAIfrom langchain_core.prompts import ChatPromptTemplate# 1) Modelllm = ChatOpenAI(model="gpt-4o-mini", temperature=0)# 2) Promptprompt = ChatPromptTemplate.from_messages( et un guide de diffusion en continu.---## Blocs de construction que vous utiliserez 80 % du temps### 1) Prompts et parsing de la sortie- Utilisez `ChatPromptTemplate` pour des prompts structurés.- Analysez les sorties avec `StrOutputParser` ou des analyseurs JSON pour des réponses typées.```pythonfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_openai import ChatOpenAIllm = ChatOpenAI(model="gpt-4o-mini")prompt = ChatPromptTemplate.from_template("""Résumez le texte suivant en 3 points :---{text}""")parser = StrOutputParserchain = prompt | llm | parsersummary = chain.invoke({"text": "LangChain aide à construire des applications LLM avec RAG et des outils."})print(summary)# pip install faiss-cpu tiktokenfrom langchain_openai import OpenAIEmbeddings, ChatOpenAIfrom langchain_community.vectorstores import FAISSfrom langchain_text_splitters import RecursiveCharacterTextSplitterfrom langchain_core.prompts import ChatPromptTemplate# Prepare documentstexts = .---## Du prototype à la production : Un plan étape par étape### Étape 1 : Définir le scénario utilisateur- Qui est l'utilisateur ? Quel travail essaie-t-il d'accomplir ?- Exemple : « Un agent de support qui répond aux questions sur les produits à partir de documents internes et de tickets récents. »### Étape 2 : Choisir la pile viable minimale- Modèle : Choisissez un modèle fiable et à prix raisonnable (par exemple, GPT-4o-mini ou un modèle ouvert de pointe).- Données : Décidez si vous avez besoin de RAG maintenant. Si oui, commencez avec FAISS localement.- E/S : Utilisez LCEL pour une itération rapide ; évitez le code de colle personnalisé.### Étape 3 : Mettre en œuvre une boucle RAG propre- Divisez correctement les documents.- Indexez les embeddings.- Proposez avec le contexte et les citations.- Ajoutez un garde-fou pour éviter les hallucinations lorsqu'aucun contexte pertinent n'est trouvé.```pythonfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplateqa_prompt = ChatPromptTemplate.from_template("""Répondez à la question en utilisant UNIQUEMENT le CONTEXTE ci-dessous. Si la réponse n'est pasdans le contexte, dites « Je ne sais pas ». Incluez les identifiants de document cités.CONTEXTE :{context}QUESTION : {question}""")parser = StrOutputParserrag_chain = (RunnableParallel(context=retriever, question=RunnableLambda(lambda x: x.### Étape 5 : Sorties typées et validation- Utilisez `PydanticOutputParser` ou un schéma JSON pour appliquer la structure des réponses de l'API.- Validez les champs pour détecter la dérive du modèle.### Étape 6 : Outils et appel de fonctions pour les tâches réelles- Introduisez les outils avec parcimonie.- Outils courants : calculatrice, recherche sur le web, exécuteur de requêtes SQL, exécuteur de code.- Décrivez clairement les capacités des outils dans les docstrings.### Étape 7 : Durcissement- Limitation du débit et stratégies de nouvelle tentative.- Délais d'attente et disjoncteurs.- Filtres de sécurité et vérifications du contenu.### Étape 8 : Évaluation et amélioration continue- Testez avec des ensembles de données golden (entrée → sortie attendue).- Évaluez la fidélité, l'exhaustivité des réponses et la précision des citations.- Mesurez le taux de réussite de la récupération et la latence.---## Modèles courants et pièges- Commencez simplement : Chaînes avant les agents. Vous obtiendrez de la prévisibilité et un coût inférieur.- Le chunking est important : Le réglage de la taille/du chevauchement des chunks peut modifier la qualité de la récupération plus que le remplacement du modèle.- Fuite de prompt : Ne mettez pas tout et n'importe quoi dans les prompts système ; gardez-les ciblés.- Déterminisme : Définissez `temperature=0` pour l'évaluation et les workflows critiques.- UX de streaming : Diffusez des jetons vers l'interface utilisateur pendant que le reste du système récupère des actifs ou précharge le contexte.- Sorties structurées : Utilisez des analyseurs pour rendre l'intégration en aval indolore.---## Un mini-projet complet : Questions et réponses sur la documentation avec citationsCet exemple relie tout : ingestion, RAG, génération de réponses et streaming.```python# pip install langchain langchain-openai faiss-cpu tiktokenfrom langchain_openai import ChatOpenAI, OpenAIEmbeddingsfrom langchain_text_splitters import RecursiveCharacterTextSplitterfrom langchain_community.vectorstores import FAISSfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.runnables import RunnableParallel, RunnableLambda# 1) Ingestcorpus = {"pricing": "Notre plan Pro prend en charge 1M de jetons de contexte et comprend un support prioritaire.","limits": "La limite de débit de l'API est de 60 requêtes par minute pour les utilisateurs Pro.","security": "Nous stockons les journaux pendant 30 jours, sauf si la journalisation est désactivée par l'administrateur.",}splitter = RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=50)all_chunks, ids = [], []for doc_id, text in corpus.items:for i, chunk in enumerate(splitter.split_text(text)):all_chunks.append(chunk)ids.append(f"{doc_id}-{i}")# 2) Indexdb = FAISS.from_texts(all_chunks, OpenAIEmbeddings)retriever = db.as_retriever(k=4)# 3) Promptprompt = ChatPromptTemplate.from_template("""Vous êtes un assistant de support. Utilisez le CONTEXTE pour répondre.En cas de doute, dites « Je ne sais pas ». Incluez les citations des identifiants de source.CONTEXTE :{context}QUESTION : {question}""")# 4) Model and parserllm = ChatOpenAI(model="gpt-4o-mini", temperature=0)parser = StrOutputParser# 5) Compose chainrag = (RunnableParallel(context=retriever,question=RunnableLambda(lambda x: x["question"]) # pass-through)| prompt| llm| parser)# 6) Ask a questionfor chunk in rag.stream({"question": "What are Pro rate limits and log retention?"}):print(chunk, end="", flush=True)batch sur Runnables pour le débit.prompt | llm et testez avec .invoke ou .stream. Les tutoriels officiels présentent étape par étape le chat simple, RAG et les agents pour un démarrage rapide.Runnable prennent en charge .stream pour la synchronisation et .astream pour l'asynchrone afin de produire des chunks à mesure qu'ils arrivent. Le guide de streaming couvre l'utilisation et les meilleures pratiques.
Comment maîtriser ChatPDF : Obtenez des insights plus rapidement à partir de documents denses

La meilleure alternative à X Auto-Translation pour des documents rapides et précis

Traduction IA Samsung indisponible en Iran ? Solutions pratiques

Outils de traduction persan : un guide pratique pour un travail plus rapide et précis

La meilleure alternative à Grok pour une recherche approfondie et référencée

Les 15 principales fonctionnalités d'un générateur d'images IA que vous utiliserez réellement