add more ops
This commit is contained in:
parent
84d1478b66
commit
327046c568
|
|
@ -4,9 +4,10 @@ This project shows how to build an agent that performs addition using PocketFlow
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Addition operations through a simple terminal interface
|
- Mathematical operation tools through a simple terminal interface
|
||||||
- Integration with Model Context Protocol (MCP)
|
- Integration with Model Context Protocol (MCP)
|
||||||
- Comparison between MCP and direct function calling
|
- Comparison between MCP and direct function calling
|
||||||
|
- **Simple toggle** between MCP and local function calling
|
||||||
|
|
||||||
## How to Run
|
## How to Run
|
||||||
|
|
||||||
|
|
@ -26,9 +27,10 @@ This project shows how to build an agent that performs addition using PocketFlow
|
||||||
|
|
||||||
To compare both approaches, this demo provides local function alternatives that don't require MCP:
|
To compare both approaches, this demo provides local function alternatives that don't require MCP:
|
||||||
|
|
||||||
- To use traditional function calling instead of MCP, replace:
|
- **Toggle with a simple flag:** Set `MCP = True` or `MCP = False` at the top of `utils.py` to switch between MCP and local implementations.
|
||||||
- `get_tools()` with `local_get_tools()`
|
- No code changes needed! The application automatically uses either:
|
||||||
- `call_tool()` with `local_call_tool()`
|
- MCP server tools when `MCP = True`
|
||||||
|
- Local function implementations when `MCP = False`
|
||||||
|
|
||||||
This allows you to see the difference between the two approaches while keeping the same workflow.
|
This allows you to see the difference between the two approaches while keeping the same workflow.
|
||||||
|
|
||||||
|
|
@ -53,7 +55,7 @@ flowchart LR
|
||||||
|
|
||||||
The agent uses PocketFlow to create a workflow where:
|
The agent uses PocketFlow to create a workflow where:
|
||||||
1. It takes user input about numbers
|
1. It takes user input about numbers
|
||||||
2. Connects to the MCP server for addition operations
|
2. Connects to the MCP server for mathematical operations (or uses local functions based on the `MCP` flag)
|
||||||
3. Returns the result
|
3. Returns the result
|
||||||
|
|
||||||
## Files
|
## Files
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,9 @@ import asyncio
|
||||||
from mcp import ClientSession, StdioServerParameters
|
from mcp import ClientSession, StdioServerParameters
|
||||||
from mcp.client.stdio import stdio_client
|
from mcp.client.stdio import stdio_client
|
||||||
|
|
||||||
|
# Global flag to control whether to use MCP or local implementation
|
||||||
|
MCP = False
|
||||||
|
|
||||||
def call_llm(prompt):
|
def call_llm(prompt):
|
||||||
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY", "your-api-key"))
|
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY", "your-api-key"))
|
||||||
r = client.chat.completions.create(
|
r = client.chat.completions.create(
|
||||||
|
|
@ -12,7 +15,14 @@ def call_llm(prompt):
|
||||||
)
|
)
|
||||||
return r.choices[0].message.content
|
return r.choices[0].message.content
|
||||||
|
|
||||||
def get_tools(server_script_path):
|
def get_tools(server_script_path=None):
|
||||||
|
"""Get available tools, either from MCP server or locally based on MCP global setting."""
|
||||||
|
if MCP:
|
||||||
|
return mcp_get_tools(server_script_path)
|
||||||
|
else:
|
||||||
|
return local_get_tools(server_script_path)
|
||||||
|
|
||||||
|
def mcp_get_tools(server_script_path):
|
||||||
"""Get available tools from an MCP server.
|
"""Get available tools from an MCP server.
|
||||||
"""
|
"""
|
||||||
async def _get_tools():
|
async def _get_tools():
|
||||||
|
|
@ -97,6 +107,13 @@ def local_get_tools(server_script_path=None):
|
||||||
return [DictObject(tool) for tool in tools]
|
return [DictObject(tool) for tool in tools]
|
||||||
|
|
||||||
def call_tool(server_script_path=None, tool_name=None, arguments=None):
|
def call_tool(server_script_path=None, tool_name=None, arguments=None):
|
||||||
|
"""Call a tool, either from MCP server or locally based on MCP global setting."""
|
||||||
|
if MCP:
|
||||||
|
return mcp_call_tool(server_script_path, tool_name, arguments)
|
||||||
|
else:
|
||||||
|
return local_call_tool(server_script_path, tool_name, arguments)
|
||||||
|
|
||||||
|
def mcp_call_tool(server_script_path=None, tool_name=None, arguments=None):
|
||||||
"""Call a tool on an MCP server.
|
"""Call a tool on an MCP server.
|
||||||
"""
|
"""
|
||||||
async def _call_tool():
|
async def _call_tool():
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue