forked from aws/agentcore-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
103 lines (88 loc) · 2.66 KB
/
main.py
File metadata and controls
103 lines (88 loc) · 2.66 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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import os
from agents import Agent, Runner, function_tool
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from model.load import load_model
{{#if hasGateway}}
from mcp_client.client import get_all_gateway_mcp_servers
{{else}}
from mcp_client.client import get_streamable_http_mcp_client
{{/if}}
app = BedrockAgentCoreApp()
log = app.logger
# Get MCP Server
{{#if hasGateway}}
mcp_servers = get_all_gateway_mcp_servers()
{{else}}
mcp_server = get_streamable_http_mcp_client()
mcp_servers = [mcp_server] if mcp_server else []
{{/if}}
_credentials_loaded = False
def ensure_credentials_loaded():
global _credentials_loaded
if not _credentials_loaded:
load_model()
_credentials_loaded = True
# Define a simple function tool
@function_tool
def add_numbers(a: int, b: int) -> int:
"""Return the sum of two numbers"""
return a + b
# Define the agent execution
async def main(query):
ensure_credentials_loaded()
try:
{{#if hasGateway}}
if mcp_servers:
agent = Agent(
name="{{ name }}",
model="gpt-4.1",
mcp_servers=mcp_servers,
tools=[add_numbers]
)
result = await Runner.run(agent, query)
return result
else:
agent = Agent(
name="{{ name }}",
model="gpt-4.1",
mcp_servers=[],
tools=[add_numbers]
)
result = await Runner.run(agent, query)
return result
{{else}}
if mcp_servers:
async with mcp_servers[0] as server:
active_servers = [server]
agent = Agent(
name="{{ name }}",
model="gpt-4.1",
mcp_servers=active_servers,
tools=[add_numbers]
)
result = await Runner.run(agent, query)
return result
else:
agent = Agent(
name="{{ name }}",
model="gpt-4.1",
mcp_servers=[],
tools=[add_numbers]
)
result = await Runner.run(agent, query)
return result
{{/if}}
except Exception as e:
log.error(f"Error during agent execution: {e}", exc_info=True)
raise e
@app.entrypoint
async def invoke(payload, context):
log.info("Invoking Agent.....")
# Process the user prompt
prompt = payload.get("prompt", "What can you help me with?")
# Run the agent
result = await main(prompt)
# Return result
return {"result": result.final_output}
if __name__ == "__main__":
app.run()