TheoLvs's picture
First commit CQA with Agents
481f3b1
raw
history blame
1.32 kB
from langchain_core.pydantic_v1 import BaseModel, Field
from typing import List
from typing import Literal
from langchain.prompts import ChatPromptTemplate
from langchain_core.utils.function_calling import convert_to_openai_function
from langchain.output_parsers.openai_functions import JsonOutputFunctionsParser
class Translation(BaseModel):
"""Analyzing the user message input"""
translation: str = Field(
description="Translate the message input to English",
)
def make_translation_chain(llm):
openai_functions = [convert_to_openai_function(Translation)]
llm_with_functions = llm.bind(functions = openai_functions,function_call={"name":"Translation"})
prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant, you will translate the user input message to English using the function provided"),
("user", "input: {input}")
])
chain = prompt | llm_with_functions | JsonOutputFunctionsParser()
return chain
def make_translation_node(llm):
translation_chain = make_translation_chain(llm)
def translate_query(state):
user_input = state["user_input"]
translation = translation_chain.invoke({"input":user_input})
return {"query":translation["translation"]}
return translate_query