|
import os
|
|
from pydantic import BaseModel, Field
|
|
|
|
from dotenv import load_dotenv
|
|
from prompts import *
|
|
|
|
from langchain_openai import ChatOpenAI
|
|
from langchain_core.prompts import ChatPromptTemplate
|
|
|
|
load_dotenv()
|
|
|
|
class RouterResponse_2(BaseModel):
|
|
route :list[str]= Field(description=("A list of keys relevant to the user's query"))
|
|
class ExtractorResponse_2(BaseModel):
|
|
information: str=Field(description=("Condensed information based on the context provided"))
|
|
|
|
llm = ChatOpenAI(model="openai/gpt-4o-mini",temperature=0.7,base_url="https://openrouter.ai/api/v1",
|
|
api_key=os.getenv("OPEN_ROUTER_API_KEY"))
|
|
|
|
router_prompt_1 = ChatPromptTemplate.from_messages([
|
|
("system", "You are a routing assistant."),
|
|
("user", router_instruction_prompt_1.format(query="{query}", previous_messages="{previous_messages}",
|
|
format_instructions="{format_instructions}"))])
|
|
router_chain_1= router_prompt_1 | llm
|
|
summary_prompt_1 = ChatPromptTemplate.from_messages([
|
|
("system", "You are a Summarising assistant."),
|
|
("user", summary_prompt_instructions_1.format(query="{query}", previous_messages="{previous_messages}",
|
|
data="{data}",format_instructions="{format_instructions}"))])
|
|
summary_chain_1 = summary_prompt_1 | llm
|
|
|
|
router = router_instruction_prompt_2 | llm.with_structured_output(RouterResponse_2)
|
|
extractor = extract_prompt_instructions_2 | llm.with_structured_output(ExtractorResponse_2) |