Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -19,7 +19,6 @@ model = LiteLLMModel(
|
|
19 |
|
20 |
# --- 2. MCP Server Configuration ---
|
21 |
# Define the connection parameters for your MCP servers.
|
22 |
-
# These commands will run in the background to connect to your deployed tools.
|
23 |
kgb_server_parameters = StdioServerParameters(
|
24 |
command="npx",
|
25 |
args=[
|
@@ -41,22 +40,21 @@ t2i_server_parameters = StdioServerParameters(
|
|
41 |
server_parameters = [kgb_server_parameters, t2i_server_parameters]
|
42 |
|
43 |
# --- 3. Main Application Logic ---
|
44 |
-
# We define the main function to encapsulate the agent setup and workflow.
|
45 |
def run_storycrafter():
|
46 |
-
#
|
47 |
-
|
|
|
|
|
|
|
48 |
print("Connecting to MCP servers and fetching tools...")
|
49 |
# Get all available tools from all connected MCP servers.
|
50 |
all_tools = mcp.get_tools()
|
51 |
print(f"Found {len(all_tools)} tools.")
|
52 |
if not all_tools:
|
53 |
print("Warning: No tools were loaded from the MCP servers. Agents will have limited capabilities.")
|
54 |
-
|
55 |
# --- 4. Agent Definitions ---
|
56 |
-
# We define our agent team inside the 'with' block to give them access to the loaded tools.
|
57 |
-
|
58 |
# The Writer Agent is given all available tools.
|
59 |
-
# It will intelligently select the correct tool (e.g., knowledge_graph) when needed.
|
60 |
writer_agent = ToolCallingAgent(
|
61 |
tools=all_tools,
|
62 |
model=model,
|
@@ -65,7 +63,6 @@ def run_storycrafter():
|
|
65 |
)
|
66 |
|
67 |
# The Illustrator Agent is also given all available tools.
|
68 |
-
# It will select the 'text_to_image' tool when its services are required.
|
69 |
illustrator_agent = ToolCallingAgent(
|
70 |
tools=all_tools,
|
71 |
model=model,
|
@@ -75,7 +72,7 @@ def run_storycrafter():
|
|
75 |
|
76 |
# The Director Agent orchestrates the other two agents.
|
77 |
director_agent = CodeAgent(
|
78 |
-
tools=[],
|
79 |
model=model,
|
80 |
managed_agents=[writer_agent, illustrator_agent],
|
81 |
system_prompt="""
|
@@ -96,12 +93,10 @@ def run_storycrafter():
|
|
96 |
print(f"\n--- Director's Task ---")
|
97 |
print(f"Prompt: {user_prompt}\n")
|
98 |
|
99 |
-
# The director now runs the full workflow.
|
100 |
final_output = director_agent.run(f"Create a story and illustration for the following prompt: {user_prompt}")
|
101 |
|
102 |
print("\n--- Agentic Storycrafter Result ---")
|
103 |
|
104 |
-
# The output from the director is code that needs to be executed to get the result
|
105 |
result_dict = eval(final_output)
|
106 |
|
107 |
story = result_dict.get("story")
|
@@ -113,7 +108,6 @@ def run_storycrafter():
|
|
113 |
if image_data and 'b64_json' in image_data:
|
114 |
print("\n--- ILLUSTRATION ---")
|
115 |
print("Illustration created. Saving to 'story_illustration.png'")
|
116 |
-
# Decode the base64 string and save it as an image file
|
117 |
try:
|
118 |
img_bytes = base64.b64decode(image_data['b64_json'])
|
119 |
img = Image.open(io.BytesIO(img_bytes))
|
@@ -125,7 +119,7 @@ def run_storycrafter():
|
|
125 |
print("\n--- ILLUSTRATION ---")
|
126 |
print("No illustration was generated.")
|
127 |
|
128 |
-
|
129 |
# --- 6. Execution Start ---
|
130 |
if __name__ == "__main__":
|
131 |
-
run_storycrafter()
|
|
|
|
19 |
|
20 |
# --- 2. MCP Server Configuration ---
|
21 |
# Define the connection parameters for your MCP servers.
|
|
|
22 |
kgb_server_parameters = StdioServerParameters(
|
23 |
command="npx",
|
24 |
args=[
|
|
|
40 |
server_parameters = [kgb_server_parameters, t2i_server_parameters]
|
41 |
|
42 |
# --- 3. Main Application Logic ---
|
|
|
43 |
def run_storycrafter():
|
44 |
+
# Instantiate the MCPClient *before* the 'with' block, as per the working example.
|
45 |
+
mcp = MCPClient(server_parameters)
|
46 |
+
|
47 |
+
# Use the created MCPClient instance as a context manager.
|
48 |
+
with mcp:
|
49 |
print("Connecting to MCP servers and fetching tools...")
|
50 |
# Get all available tools from all connected MCP servers.
|
51 |
all_tools = mcp.get_tools()
|
52 |
print(f"Found {len(all_tools)} tools.")
|
53 |
if not all_tools:
|
54 |
print("Warning: No tools were loaded from the MCP servers. Agents will have limited capabilities.")
|
55 |
+
|
56 |
# --- 4. Agent Definitions ---
|
|
|
|
|
57 |
# The Writer Agent is given all available tools.
|
|
|
58 |
writer_agent = ToolCallingAgent(
|
59 |
tools=all_tools,
|
60 |
model=model,
|
|
|
63 |
)
|
64 |
|
65 |
# The Illustrator Agent is also given all available tools.
|
|
|
66 |
illustrator_agent = ToolCallingAgent(
|
67 |
tools=all_tools,
|
68 |
model=model,
|
|
|
72 |
|
73 |
# The Director Agent orchestrates the other two agents.
|
74 |
director_agent = CodeAgent(
|
75 |
+
tools=[],
|
76 |
model=model,
|
77 |
managed_agents=[writer_agent, illustrator_agent],
|
78 |
system_prompt="""
|
|
|
93 |
print(f"\n--- Director's Task ---")
|
94 |
print(f"Prompt: {user_prompt}\n")
|
95 |
|
|
|
96 |
final_output = director_agent.run(f"Create a story and illustration for the following prompt: {user_prompt}")
|
97 |
|
98 |
print("\n--- Agentic Storycrafter Result ---")
|
99 |
|
|
|
100 |
result_dict = eval(final_output)
|
101 |
|
102 |
story = result_dict.get("story")
|
|
|
108 |
if image_data and 'b64_json' in image_data:
|
109 |
print("\n--- ILLUSTRATION ---")
|
110 |
print("Illustration created. Saving to 'story_illustration.png'")
|
|
|
111 |
try:
|
112 |
img_bytes = base64.b64decode(image_data['b64_json'])
|
113 |
img = Image.open(io.BytesIO(img_bytes))
|
|
|
119 |
print("\n--- ILLUSTRATION ---")
|
120 |
print("No illustration was generated.")
|
121 |
|
|
|
122 |
# --- 6. Execution Start ---
|
123 |
if __name__ == "__main__":
|
124 |
+
run_storycrafter()
|
125 |
+
|