rohittayde commited on
Commit
2389063
·
verified ·
1 Parent(s): 47d9afe

Update agent.py

Browse files
Files changed (1) hide show
  1. agent.py +51 -0
agent.py CHANGED
@@ -15,6 +15,57 @@ from langchain_core.messages import SystemMessage, HumanMessage
15
  from langchain_core.tools import tool
16
  from langchain.tools.retriever import create_retriever_tool
17
  from supabase.client import Client, create_client
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  load_dotenv()
20
 
 
15
  from langchain_core.tools import tool
16
  from langchain.tools.retriever import create_retriever_tool
17
  from supabase.client import Client, create_client
18
+ # --- langchain create_retriever_tool fallback (paste near other imports) ---
19
+ import traceback
20
+
21
+ try:
22
+ from langchain.tools.retriever import create_retriever_tool
23
+ HAS_CREATE_RETRIEVER_TOOL = True
24
+ except Exception:
25
+ HAS_CREATE_RETRIEVER_TOOL = False
26
+ print("Warning: langchain.tools.retriever.create_retriever_tool not found. Using local fallback.")
27
+ print(traceback.format_exc())
28
+
29
+ class _SimpleRetrieverTool:
30
+ def __init__(self, retriever, name="retriever", description=""):
31
+ self.name = name
32
+ self.description = description
33
+ self._retriever = retriever
34
+
35
+ def run(self, query: str):
36
+ # Try common retriever methods in order
37
+ docs = []
38
+ try:
39
+ if hasattr(self._retriever, "get_relevant_documents"):
40
+ docs = self._retriever.get_relevant_documents(query)
41
+ elif hasattr(self._retriever, "retrieve"):
42
+ docs = self._retriever.retrieve(query)
43
+ else:
44
+ # try calling the retriever directly (some callables return results)
45
+ docs = self._retriever(query)
46
+ except Exception as e:
47
+ return f"[retriever-fallback-error] {e}"
48
+
49
+ # Normalize docs into strings
50
+ out_texts = []
51
+ for d in docs or []:
52
+ text = getattr(d, "page_content", None)
53
+ if text is None:
54
+ if isinstance(d, dict):
55
+ text = d.get("page_content") or d.get("text") or str(d)
56
+ else:
57
+ text = str(d)
58
+ out_texts.append(text.strip())
59
+ # return compact result
60
+ return "\n\n".join(t for t in out_texts if t)
61
+
62
+ def create_retriever_tool(retriever, name: str = "retriever", description: str = ""):
63
+ """
64
+ Minimal drop-in fallback that returns an object with .run(query).
65
+ Use this if the langchain helper isn't available in the installed package.
66
+ """
67
+ return _SimpleRetrieverTool(retriever, name=name, description=description)
68
+
69
 
70
  load_dotenv()
71