first comit
This commit is contained in:
74
demo_llm.py
Normal file
74
demo_llm.py
Normal file
@@ -0,0 +1,74 @@
|
||||
import asyncio
|
||||
|
||||
from pydantic import SecretStr
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
from langchain_openai import ChatOpenAI
|
||||
|
||||
|
||||
# --- Étape 1 : Configuration ---
|
||||
# Paramètres de connexion au LLM.
|
||||
class Settings(BaseSettings):
|
||||
"""Charge les variables d'environnement depuis variables d'environnement ou un fichier .env."""
|
||||
model_config = SettingsConfigDict(
|
||||
env_file=".env",
|
||||
env_file_encoding="utf-8",
|
||||
case_sensitive=True
|
||||
)
|
||||
|
||||
# Paramètres de connexion au serveur LLM (LM Studio)
|
||||
LLM_CHAT_SERVER_BASE_URL: str = "http://127.0.0.1:1234/v1"
|
||||
LLM_CHAT_MODEL: str = "meta-llama-3.1-8b-instruct"
|
||||
LLM_CHAT_TEMPERATURE: float = 0.7 # Rendre le LLM un peu plus créatif
|
||||
LLM_CHAT_API_KEY: SecretStr = "not-needed" # attention : en production, ne pas hardcoder l'API key !
|
||||
|
||||
|
||||
# On instancie la configuration
|
||||
settings = Settings()
|
||||
|
||||
# --- Étape 2 : Initialisation du LLM ---
|
||||
# On crée un "client" qui sait comment communiquer avec notre LLM.
|
||||
print(f"Connexion au modèle '{settings.LLM_CHAT_MODEL}'...")
|
||||
llm = ChatOpenAI(
|
||||
model=settings.LLM_CHAT_MODEL,
|
||||
base_url=settings.LLM_CHAT_SERVER_BASE_URL,
|
||||
temperature=settings.LLM_CHAT_TEMPERATURE,
|
||||
api_key=settings.LLM_CHAT_API_KEY
|
||||
)
|
||||
print("Connecté !")
|
||||
|
||||
|
||||
# --- Étape 3 : La fonction principale asynchrone ---
|
||||
async def main():
|
||||
"""Fonction principale pour poser une question au LLM."""
|
||||
|
||||
# TODO 1: définir le prompt de votre choix
|
||||
# On définit le prompt : c'est la question/instruction que l'on donne à l'IA.
|
||||
prompt = "Raconte-moi une blague courte sur un développeur Python."
|
||||
|
||||
print("\n-------------------------------------------")
|
||||
print(f" Envoi du prompt au LLM :")
|
||||
print(f" '{prompt}'")
|
||||
print("-------------------------------------------")
|
||||
|
||||
# TODO 2: Invoquer le LLM
|
||||
# `ainvoke` envoie le prompt au LLM et attend sa réponse de manière asynchrone.
|
||||
# C'est la fonction la plus importante à comprendre.
|
||||
response = # ... votre code ici ...
|
||||
|
||||
# Vérification que la réponse a bien été reçue
|
||||
if response is None:
|
||||
print("Erreur : Le LLM n'a pas été appelé ! Veuillez compléter le code (TODO 2).")
|
||||
return
|
||||
|
||||
# TODO 3: extraire le contenu de la réponse
|
||||
# La réponse du LLM est un objet. Le texte généré se trouve dans l'attribut `content`.
|
||||
ai_message = # ... votre code ici ...
|
||||
|
||||
print("\n Réponse du LLM :")
|
||||
print(f" '{ai_message}'")
|
||||
print("-------------------------------------------\n")
|
||||
|
||||
|
||||
# --- Point d'entrée du script ---
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user