Repository navigation
Expand file tree
/
Copy pathagent.py
More file actions
58 lines (52 loc) · 1.91 KB
/
Copy pathagent.py
File metadata and controls
58 lines (52 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from langchain.agents import initialize_agent, AgentType
from langchain.tools import Tool
from langchain_openai import ChatOpenAI
from tools.retrieval_tool import FMDRetrievalTool
from tools.ranking_tool import RankerTool
from tools.clarifier_tool import ClarifierTool
from tools.adaptation_tool import AdaptationTool
from tools.explanation_tool import ExplanationTool
from tools.memory_tool import get_memory
import config
# === Initialize the core LLM ===
llm = ChatOpenAI(
model=config.OPENAI_MODEL_NAME,
temperature=0,
openai_api_key=config.OPENAI_API_KEY
)
# === Initialize tools ===
tools = [
Tool.from_function(
func=FMDRetrievalTool(
fmd_path=config.FMD_JSONL_PATH,
embedding_model=config.EMBEDDING_MODEL_NAME
),
name="RetrieveModels",
description="Retrieve top-k relevant models from database. k is at least 4, at most 6."
),
Tool.from_function(
func=RankerTool(),
name="RankCandidates",
description="If necessary, rank retrieved top-k candidate models based on user query. The input of this tool should be the dictionary returned from the FMDRetrievalTool that contains both the query and the retrieved candidates."
),
Tool.from_function(lambda query_and_models: RankerTool()._run(query_and_models), name="RankCandidates", description="Rank candidate models based on user query."),
Tool.from_function(
func=ClarifierTool(),
name="ClarifyUser",
description="Ask for clarification when query is underspecified"
),
Tool.from_function(
func=ExplanationTool(),
name="ExplainRecommendation",
description="Generate explanation for selected model"
)
]
def create_agent():
memory = get_memory() # fresh memory
return initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.OPENAI_FUNCTIONS,
memory=memory,
verbose=True
)