Skip to content

Commit a5274f0

Browse files
committed
feat: add http to mcp and tool search tutorial
1 parent cb8dc86 commit a5274f0

File tree

9 files changed

+260
-0
lines changed

9 files changed

+260
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import requests
2+
import httpx
3+
import random
4+
import json
5+
6+
from google.adk.cli.adk_web_server import CreateSessionRequest, RunAgentRequest
7+
from google.genai.types import Content, Part
8+
import asyncio
9+
10+
11+
if __name__ == "__main__":
12+
# Step 0: setup running configs
13+
app_name = "travel_planner_advanced"
14+
user_id = "agentkit_user"
15+
session_id = f"agentkit_sample_session"
16+
base_url = "http://127.0.0.1:8000"
17+
api_key = "test key"
18+
19+
task_num = 1
20+
21+
22+
# Step 1: create a session
23+
def create_session():
24+
create_session_request = CreateSessionRequest(
25+
session_id = session_id + f"_{random.randint(1, 9999)}",
26+
)
27+
28+
response = requests.post(
29+
url=f"{base_url}/apps/{app_name}/users/{user_id}/sessions/{create_session_request.session_id}",
30+
headers={"Authorization": f"Bearer {api_key}"},
31+
)
32+
33+
print(f"[create session] Response from server: {response.json()}")
34+
35+
return create_session_request.session_id
36+
37+
# Step 2: run agent with SSE
38+
run_agent_request = RunAgentRequest(
39+
app_name=app_name,
40+
user_id=user_id,
41+
session_id=create_session(),
42+
new_message=Content(parts=[Part(text="商品购买")], role="user"),
43+
stream=True,
44+
)
45+
46+
print("[run agent] Event from server:")
47+
48+
# 3. Handle streaming events
49+
async def send_request(message: str):
50+
run_agent_request = RunAgentRequest(
51+
app_name=app_name,
52+
user_id=user_id,
53+
session_id=create_session(),
54+
new_message=Content(parts=[Part(text=message)], role="user"),
55+
stream=True,
56+
)
57+
58+
with httpx.stream("POST", f"{base_url}/run_sse", json=run_agent_request.model_dump(exclude_none=True), timeout=120, headers={"Authorization": f"Bearer {api_key}"}) as r:
59+
for line in r.iter_lines():
60+
print(line)
61+
62+
async def send_request_parallel():
63+
tasks = [send_request("找到 vivobook 商品并下单购买") for _ in range(task_num)]
64+
await asyncio.gather(*tasks)
65+
asyncio.run(send_request_parallel())
66+
67+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# shopping cart agent 使用说明
2+
3+
## 配置文件
4+
```markdown
5+
# 在当前目录下面配置 config.yaml 文件如下:
6+
# api_key 为模型使用
7+
model:
8+
agent:
9+
api_key:
10+
name: doubao-seed-1-6-250615
11+
12+
# for deployment & web search
13+
volcengine:
14+
access_key:
15+
secret_key:
16+
17+
# for shopping cart mcp server,本 demo 中,如下配置必须填写
18+
shopping_cart_mcp_api_key:
19+
shopping_cart_mcp_tools_url:
20+
```
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import agent # noqa
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import os
2+
3+
from google.adk.planners import BuiltInPlanner
4+
from google.adk.planners import PlanReActPlanner
5+
from google.adk.tools.agent_tool import AgentTool
6+
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, StreamableHTTPConnectionParams
7+
from google.genai import types
8+
from veadk import Agent, Runner
9+
from veadk.a2a.remote_ve_agent import RemoteVeAgent
10+
from veadk.config import getenv
11+
from veadk.knowledgebase.knowledgebase import KnowledgeBase
12+
from veadk.memory.long_term_memory import LongTermMemory
13+
from veadk.memory.short_term_memory import ShortTermMemory
14+
from veadk.tools.demo_tools import get_city_weather
15+
from veadk.utils.mcp_utils import get_mcp_params
16+
17+
short_term_memory = ShortTermMemory(backend="local")
18+
19+
###Shopping cart MCP Server
20+
shopping_mcp_tools_url = getenv("SHOPPING_CART_MCP_TOOLS_URL")
21+
shopping_api_key = getenv("SHOPPING_CART_MCP_API_KEY")
22+
mcp_shopping_cart = MCPToolset(
23+
connection_params=StreamableHTTPConnectionParams(
24+
url=shopping_mcp_tools_url,
25+
headers={"Authorization": f"Bearer {shopping_api_key}"},
26+
),
27+
)
28+
29+
agent_model_name=getenv("MODEL_AGENT_NAME")
30+
31+
agent: Agent = Agent(
32+
name="shopping_cart_advanced",
33+
model_name=agent_model_name,
34+
instruction="You are an shopping cart agent.",
35+
#planner=PlanReActPlanner(),
36+
planner=BuiltInPlanner(
37+
thinking_config=types.ThinkingConfig(
38+
include_thoughts=True,
39+
),
40+
),
41+
tools=[mcp_shopping_cart],
42+
short_term_memory=short_term_memory,
43+
)
44+
45+
root_agent = agent
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import agent # noqa
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import os
2+
3+
from google.adk.planners import BuiltInPlanner
4+
from google.adk.planners import PlanReActPlanner
5+
from google.adk.tools.agent_tool import AgentTool
6+
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, StreamableHTTPConnectionParams
7+
from google.genai import types
8+
from veadk import Agent, Runner
9+
from veadk.a2a.remote_ve_agent import RemoteVeAgent
10+
from veadk.config import getenv
11+
from veadk.knowledgebase.knowledgebase import KnowledgeBase
12+
from veadk.memory.long_term_memory import LongTermMemory
13+
from veadk.memory.short_term_memory import ShortTermMemory
14+
from veadk.tools.demo_tools import get_city_weather
15+
from veadk.utils.mcp_utils import get_mcp_params
16+
17+
short_term_memory = ShortTermMemory(backend="local")
18+
19+
amap_mcp_tool_api_key = getenv("AMAP_MCP_TOOL_API_KEY")
20+
amap_mcp_tool_url = getenv("AMAP_MCP_TOOL_URL")
21+
amap_mcp_tool = MCPToolset(
22+
connection_params=StreamableHTTPConnectionParams(
23+
url=amap_mcp_tool_url,
24+
headers={"Authorization": f"Bearer {amap_mcp_tool_api_key}"},
25+
),
26+
)
27+
28+
github_tool_url = getenv("GITHUB_TOOL_URL")
29+
github_tool_api_key = getenv("GITHUB_TOOL_API_KEY")
30+
github_mcp_tool = MCPToolset(
31+
connection_params=StreamableHTTPConnectionParams(
32+
url=github_tool_url,
33+
headers={"Authorization": f"Bearer {github_tool_api_key}"},
34+
),
35+
)
36+
37+
agent_model_name=getenv("MODEL_AGENT_NAME")
38+
39+
agent: Agent = Agent(
40+
name="amap_tool_agent",
41+
model_name=agent_model_name,
42+
instruction="You are an map agent.",
43+
#planner=PlanReActPlanner(),
44+
planner=BuiltInPlanner(
45+
thinking_config=types.ThinkingConfig(
46+
include_thoughts=True,
47+
),
48+
),
49+
tools=[amap_mcp_tool, github_mcp_tool],
50+
short_term_memory=short_term_memory,
51+
)
52+
53+
root_agent = agent
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import agent # noqa
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import os
2+
3+
from google.adk.planners import BuiltInPlanner
4+
from google.adk.planners import PlanReActPlanner
5+
from google.adk.tools.agent_tool import AgentTool
6+
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, StreamableHTTPConnectionParams
7+
from google.genai import types
8+
from veadk import Agent, Runner
9+
from veadk.a2a.remote_ve_agent import RemoteVeAgent
10+
from veadk.config import getenv
11+
from veadk.knowledgebase.knowledgebase import KnowledgeBase
12+
from veadk.memory.long_term_memory import LongTermMemory
13+
from veadk.memory.short_term_memory import ShortTermMemory
14+
from veadk.tools.demo_tools import get_city_weather
15+
from veadk.utils.mcp_utils import get_mcp_params
16+
17+
short_term_memory = ShortTermMemory(backend="local")
18+
19+
#amap_mcp_api_key
20+
amap_mcp_tool_set_api_key = getenv("AMAP_MCP_TOOL_SET_API_KEY")
21+
amap_mcp_tool_set_url = getenv("AMAP_MCP_TOOL_SET_URL")
22+
amap_mcp_tool_set = MCPToolset(
23+
connection_params=StreamableHTTPConnectionParams(
24+
url=amap_mcp_tool_set_url,
25+
headers={"Authorization": f"Bearer {amap_mcp_tool_set_api_key}"},
26+
),
27+
)
28+
29+
agent_model_name=getenv("MODEL_AGENT_NAME")
30+
31+
agent: Agent = Agent(
32+
name="amap_tool_set_agent",
33+
model_name=agent_model_name,
34+
instruction="You are an map agent.",
35+
#planner=PlanReActPlanner(),
36+
planner=BuiltInPlanner(
37+
thinking_config=types.ThinkingConfig(
38+
include_thoughts=True,
39+
),
40+
),
41+
tools=[amap_mcp_tool_set],
42+
short_term_memory=short_term_memory,
43+
)
44+
45+
root_agent = agent
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# tool search agent 使用说明
2+
3+
## 配置文件
4+
```markdown
5+
# 在当前目录下面配置 config.yaml 文件如下:
6+
# api_key 为模型使用
7+
model:
8+
agent:
9+
api_key:
10+
name: doubao-seed-1-6-250615
11+
12+
# for deployment & web search
13+
volcengine:
14+
access_key:
15+
secret_key:
16+
17+
# for amap mcp tool server
18+
amap_mcp_tool_api_key:
19+
amap_mcp_tool_url:
20+
21+
# for github mcp tool
22+
github_tool_url:
23+
24+
# for amap mcp tool set server
25+
amap_mcp_tool_set_api_key:
26+
amap_mcp_tool_set_url:
27+
```

0 commit comments

Comments
 (0)