Apprenez à démarrer dans le développement de l’IA avec Langchain et Openai en créant une application de chat Python.
Tout le monde est enthousiasmé par Genai, les chatbots et les agents – et pour une bonne raison. Cet article offre une introduction très adaptée aux débutants à la construction avec Openai et Langchain en utilisant Python, vous aidant à faire vos premiers pas dans le monde du développement de l’IA. Cet article couvre les sujets suivants:
- Installation de dépendances
- Connexion au modèle Openai GPT
- Création de votre première application de chat
- Streaming la sortie
- Travailler avec l’utilisonnement, SystemMessage de Langchain
- Travailler avec les données JSON et un modèle
Installation
Commençons par installer les dépendances. Tout d’abord, créez un dossier vide et ajoutez un fichier nommé exigences.txt. À l’intérieur de ce fichier, indiquez les dépendances suivantes:
openai>=1.0.0
langchain>=0.1.0
langchain-openai>=0.1.0
python-dotenv>=1.0.0
langgraph>=0.1.0
Une fois que vous avez créé le exigences.txt fichier, exécutez la commande suivante dans le terminal pour installer toutes les dépendances:
pip3 install -r requirements.txt
Vous pouvez vérifier si les dépendances sont installées avec succès en utilisant la commande ci-dessous, qui devrait afficher une liste des dépendances installées.
pip3 list
Configuration de l’environnement
Après avoir installé les dépendances, configurez les variables d’environnement. Créer un fichier nommé .env Dans votre répertoire de projet et ajoutez les clés suivantes:
OPENAI_API_KEY= "openaikey"
LANGSMITH_TRACING="true"
LANGSMITH_API_KEY="langsmith key"
Vérifiez que vous avez déjà obtenu votre touche API OpenAI et votre clé Langsmith. Vous pouvez les obtenir de leurs portails respectifs.
Travailler avec le modèle GPT
Une fois les variables d’environnement définies, créez un fichier nommé main.py dans votre projet et importez les packages suivants.
import os
from dotenv import load_dotenv
from openai import OpenAI
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage
from langchain_core.messages import AIMessage
load_dotenv()
Après l’importation des packages, créez une instance du modèle. Utilisez Chatopenai pour initialiser le modèle GPT-3.5-turbo comme indiqué ci-dessous:
model = ChatOpenAI(
model="gpt-3.5-turbo",
api_key=os.getenv("OPENAI_API_KEY")
)
Ensuite, nous construisons le message à envoyer au modèle et obtenons la réponse du modèle.
messages = [
HumanMessage(content="Hi! I'm DJ"),
AIMessage(content="Hello DJ! How can I assist you today?"),
HumanMessage(content="What is capital of India?"),
]
Ci-dessus, nous utilisons Mesure humaine et AIMessage pour envoyer au modèle.
Mesure humaine
- Messages envoyés par l’utilisateur
- Contient les contributions, les questions ou les déclarations de l’utilisateur
- Ce message est envoyé au modèle AI
AIMessage
- Messages envoyés par le modèle AI
- Contient les réponses, les réponses ou le contenu généré du modèle
- Ce message est inclus pour représenter la réponse du modèle dans l’historique de la conversation
Passez ce message pour invoquer le modèle comme indiqué ci-dessous.
response = model.invoke(messages)
return response
Voici comment vous créez un modèle, créez un message et envoyez-le au modèle pour recevoir une réponse. Le tout ensemble, une application de chat de base peut ressembler à ceci:
import os
from dotenv import load_dotenv
from openai import OpenAI
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage
from langchain_core.messages import AIMessage
load_dotenv()
model = ChatOpenAI(
model="gpt-3.5-turbo",
api_key=os.getenv("OPENAI_API_KEY")
)
def chat():
try:
messages = [
HumanMessage(content="Hi! I'm DJ"),
AIMessage(content="Hello DJ! How can I assist you today?"),
HumanMessage(content="What is capital of India?"),
]
response = model.invoke(messages)
return response
except Exception as e:
print(f"Error: {e}")
return None
if __name__ == "__main__":
dochat = chat()
print(dochat.content)
Exécutez le code ci-dessus en exécutant la commande suivante dans votre terminal:
python3 main.py
Vous devez obtenir la sortie attendue comme indiqué ci-dessous.
Réponse en streaming
Langchain offre également un moyen simple de diffuser des réponses du modèle. Pour activer le streaming, utilisez la méthode de flux sur le modèle comme indiqué ci-dessous:
response = model.stream(messages)
print("Streaming response:")
for chunk in response:
print(chunk.content, end="", flush=True)
print()
Lorsque vous exécutez l’application, vous devez obtenir la sortie attendue, comme indiqué ci-dessous.
Jusqu’à présent, l’entrée de l’utilisateur a été codée en dur. Nous pouvons mettre à jour le code pour accepter les entrées de l’utilisateur et l’utiliser pour créer un Mesure humaine.
while True:
user_input = input("You: ").strip()
if user_input.lower() in ['exit']:
print("Goodbye!")
break
if not user_input:
continue
messages.append(HumanMessage(content=user_input))
response = model.invoke(messages)
messages.append(response)
print(f"AI: {response.content}")
print()
Nous pouvons recevoir en continu la contribution des utilisateurs dans une boucle et nous arrêter uniquement lorsque l’utilisateur tape Exit
. Nous ajoutons simplement l’entrée de l’utilisateur en tant que HumanMessage
au tableau des messages et invoquez le modèle de chat.
Le tout ensemble, une application de chat de base avec la entrée utilisateur peut ressembler à ceci:
import os
from dotenv import load_dotenv
from openai import OpenAI
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage
from langchain_core.messages import AIMessage
load_dotenv()
model = ChatOpenAI(
model="gpt-3.5-turbo",
api_key=os.getenv("OPENAI_API_KEY")
)
def chat():
try:
messages = [
HumanMessage(content="Hi! I'm DJ"),
AIMessage(content="Hello DJ! How can I assist you today?"),
]
print("Chat started! Type 'quit' to exit.")
print("-" * 30)
while True:
user_input = input("You: ").strip()
if user_input.lower() in ['exit']:
print("Goodbye!")
break
if not user_input:
continue
messages.append(HumanMessage(content=user_input))
response = model.invoke(messages)
messages.append(response)
print(f"AI: {response.content}")
print()
except Exception as e:
print(f"Error: {e}")
return None
if __name__ == "__main__":
chat()
Vous devez obtenir la sortie attendue comme indiqué ci-dessous.
Travailler avec les données JSON
Maintenant, supposons que vous ayez un ensemble de données JSON et que vous souhaitiez que le modèle génére des réponses exclusivement en fonction de ces données, sans référencer aucune source externe.
data = {
"company": {
"name": "NomadCoder AI",
"founded": 2024,
"employees": 5,
"location": "San Francisco",
"industry": "Technology"
},
"training": [
{"name": "Angular ", "price": 100},
{"name": "React", "price": 200},
{"name": "Lanchain ", "price": 500}
]
}
Après cela, vous construisez l’invite du système à être transmis au modèle comme suit:
data_string = json.dumps(data, indent=2)
system_prompt = f"""Answer questions based only on the data provided below.
If the answer is not found in the data, reply: 'Not available in provided data.'
Data:{data_string}"""
Après cela, vous construisez le tableau de messages pour inclure l’invite système comme SystemMessage.
messages = [
SystemMessage(content=system_prompt),
HumanMessage(content="Hi! I'm DJ"),
AIMessage(content="Hello DJ! How can I assist you today?"),
]
Maintenant, lorsque vous posez une question, le modèle n’utilisera aucune donnée externe; il ne répondra que sur la base des données JSON fournies dans le SystemMessage
.
Aménagement tout, vous pouvez générer une réponse à partir d’un ensemble donné de données JSON comme indiqué ci-dessous.
import json
import os
from dotenv import load_dotenv
from openai import OpenAI
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage
from langchain_core.messages import AIMessage
load_dotenv()
data = {
"company": {
"name": "NomadCoder AI",
"founded": 2024,
"employees": 5,
"location": "San Francisco",
"industry": "Technology"
},
"training": [
{"name": "Angular ", "price": 100},
{"name": "React", "price": 200},
{"name": "Lanchain ", "price": 500}
]
}
data_string = json.dumps(data, indent=2)
system_prompt = f"""Answer questions based only on the data provided below.
If the answer is not found in the data, reply: 'Not available in provided data.'
Data:{data_string}"""
model = ChatOpenAI(
model="gpt-3.5-turbo",
api_key=os.getenv("OPENAI_API_KEY")
)
def chat():
try:
messages = [
SystemMessage(content=system_prompt),
HumanMessage(content="Hi! I'm DJ"),
AIMessage(content="Hello DJ! How can I assist you today?"),
]
print("Chat started! Type 'quit' to exit.")
print("-" * 30)
while True:
user_input = input("You: ").strip()
if user_input.lower() in ['exit']:
print("Goodbye!")
break
if not user_input:
continue
messages.append(HumanMessage(content=user_input))
response = model.invoke(messages)
messages.append(response)
print(f"AI: {response.content}")
print()
except Exception as e:
print(f"Error: {e}")
return None
if __name__ == "__main__":
chat()
Vous devez obtenir la sortie attendue comme indiqué ci-dessous.
Comme vous pouvez le voir, le modèle génère des réponses uniquement en fonction de la JSON fournie dans l’invite du système.
Résumé
Cet article vous a fourni des étapes de base pour commencer le développement de l’IA avec Langchain et Openai.
Pour en savoir plus sur Langchain et Openai avec TypeScript, lisez cet article: Comment créer votre première application LLM à l’aide de Langchain et TypeScript.
Source link