add structured output llm call
This commit is contained in:
35
utils/decisions_makers/llm_call_structured_output.py
Normal file
35
utils/decisions_makers/llm_call_structured_output.py
Normal file
@ -0,0 +1,35 @@
|
||||
from langchain_core.runnables import Runnable
|
||||
from langchain_core.prompts import ChatPromptTemplate
|
||||
from langchain_core.output_parsers import PydanticOutputParser
|
||||
from langchain_groq import ChatGroq
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
# Step 1: Define the structured output
|
||||
class CountryAnswer(BaseModel):
|
||||
answer: str = Field(..., description="La réponse à la question")
|
||||
country: str = Field(..., description="Le pays concerné")
|
||||
|
||||
# Step 2: Create the output parser
|
||||
parser = PydanticOutputParser(pydantic_object=CountryAnswer)
|
||||
|
||||
# Step 3: Create the prompt
|
||||
prompt = ChatPromptTemplate.from_template(
|
||||
"Tu es un assistant utile. Réponds à la question : {question}\n"
|
||||
"Réponds uniquement en JSON avec ce format :\n{format_instructions}"
|
||||
)
|
||||
|
||||
# Step 4: LLM configuration
|
||||
llm = ChatGroq(model_name="llama3-70b-8192", temperature=0.7)
|
||||
|
||||
# Step 5: Combine everything
|
||||
chain: Runnable = prompt | llm | parser
|
||||
|
||||
# Step 6: Run the chain
|
||||
response = chain.invoke({
|
||||
"question": "Quelle est la capitale de la Suisse ?",
|
||||
"format_instructions": parser.get_format_instructions()
|
||||
})
|
||||
|
||||
# Result
|
||||
print(response)
|
Reference in New Issue
Block a user