-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchat.py
More file actions
71 lines (56 loc) · 2.11 KB
/
chat.py
File metadata and controls
71 lines (56 loc) · 2.11 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
59
60
61
62
63
64
65
66
67
68
69
70
71
import asyncio
import json
from langchain_core.messages import AIMessage, HumanMessage, ToolMessage
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
def print_messages(response):
messages = response["messages"]
for message in messages:
if isinstance(message, HumanMessage):
emoji = "👤"
content = message.content
elif isinstance(message, AIMessage):
emoji = "🤖"
if message.tool_calls:
content = message.tool_calls[0]["args"]
else:
content = message.content
elif isinstance(message, ToolMessage):
emoji = "🔧"
content = json.loads(message.content)
content = f"\n{'=' * 100}\n".join(content)
else:
raise ValueError(f"Unknown message type: {type(message)}")
print(f"{emoji} {content}")
async def main():
server_ip = "54.36.102.143" # "54.36.102.143"
client = MultiServerMCPClient(
{
"similarity_search": {
"url": f"http://{server_ip}:9000/mcp",
"transport": "streamable_http",
},
}
)
tools = await client.get_tools()
SYSTEM_PROMPT = """
You are a helpful assistant that is specifically designed to answer questions about a codebase, the content is stored in a vector store.
Please only answer questions about the codebase by running the similarity_search tool.
If necessary, you can call the tool multiple times to get the information you need.
Also use markdown to format your responses.
"""
agent = create_react_agent(
model="openai:gpt-4.1",
prompt=SYSTEM_PROMPT,
tools=tools,
)
response = await agent.ainvoke(
{
# "messages": "is there any java code in torchjd?"
# "messages": "can you remove TorchJD/torchjd from the vector store?"
"messages": "can you query the vector store for 'class UPGrad('"
}
)
print_messages(response)
if __name__ == "__main__":
asyncio.run(main())