Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,9 @@ examples/mcp_root_test/test_data/*.png
#.idea/
uv.lock

# MacOS
.DS_Store

# File generated from promptify script (to create an LLM-friendly prompt for the repo)
project_contents.md

Expand Down
21 changes: 21 additions & 0 deletions examples/deepinfra/example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from dotenv import load_dotenv, find_dotenv
from mcp_agent.core.fastagent import FastAgent
from mcp_agent.core.prompt import Prompt

_ = load_dotenv(find_dotenv())

fast = FastAgent("deepinfra example")


# Define the agent
@fast.agent(instruction="You are a helpful AI Agent", servers=["filesystem", "fetch"])
async def main():
# use the --model command line switch or agent arguments to change model
async with fast.run() as agent:
await agent.default.generate(
[
Prompt.user(
"Write a beautiful poem about the ocean",
)
]
)
43 changes: 43 additions & 0 deletions examples/deepinfra/fastagent.config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# FastAgent Configuration File

# DeepInfra Model Configuration:
#
# Takes format:
# deepinfra.<model_string> (e.g. deepinfra.Qwen/Qwen3-30B-A3B or deepinfra.meta-llama/Llama-4-Scout-17B-16E-Instruct)
# Accepts all models from https://deepinfra.com/models

default_model: deepinfra.Qwen/Qwen3-14B

# Logging and Console Configuration:
logger:
# level: "debug" | "info" | "warning" | "error"
# type: "none" | "console" | "file" | "http"
# path: "/path/to/logfile.jsonl"


# Switch the progress display on or off
progress_display: true

# Show chat User/Assistant messages on the console
show_chat: true
# Show tool calls on the console
show_tools: true
# Truncate long tool responses on the console
truncate_tools: true

# MCP Servers
mcp:
servers:
fetch:
command: "uvx"
args: ["mcp-server-fetch"]
filesystem:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "."]
webcam:
command: "npx"
args: ["-y","@llmindset/mcp-webcam"]
hfspace:
command: "npx"
args: ["-y","@llmindset/mcp-hfspace"]

4 changes: 3 additions & 1 deletion src/mcp_agent/llm/model_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@
from mcp_agent.llm.provider_types import Provider
from mcp_agent.llm.providers.augmented_llm_anthropic import AnthropicAugmentedLLM
from mcp_agent.llm.providers.augmented_llm_azure import AzureOpenAIAugmentedLLM
from mcp_agent.llm.providers.augmented_llm_deepinfra import DeepInfraAugmentedLLM
from mcp_agent.llm.providers.augmented_llm_deepseek import DeepSeekAugmentedLLM
from mcp_agent.llm.providers.augmented_llm_generic import GenericAugmentedLLM
from mcp_agent.llm.providers.augmented_llm_google import GoogleAugmentedLLM
from mcp_agent.llm.providers.augmented_llm_openai import OpenAIAugmentedLLM
from mcp_agent.llm.providers.augmented_llm_openrouter import OpenRouterAugmentedLLM
from mcp_agent.llm.providers.augmented_llm_tensorzero import TensorZeroAugmentedLLM
from mcp_agent.mcp.interfaces import AugmentedLLMProtocol

# from mcp_agent.workflows.llm.augmented_llm_deepseek import DeekSeekAugmentedLLM


Expand All @@ -29,6 +29,7 @@
Type[PassthroughLLM],
Type[PlaybackLLM],
Type[DeepSeekAugmentedLLM],
Type[DeepInfraAugmentedLLM],
Type[OpenRouterAugmentedLLM],
Type[TensorZeroAugmentedLLM],
]
Expand Down Expand Up @@ -115,6 +116,7 @@ class ModelFactory:
Provider.OPENROUTER: OpenRouterAugmentedLLM,
Provider.TENSORZERO: TensorZeroAugmentedLLM,
Provider.AZURE: AzureOpenAIAugmentedLLM,
Provider.DEEPINFRA: DeepInfraAugmentedLLM,
}

# Mapping of special model names to their specific LLM classes
Expand Down
1 change: 1 addition & 0 deletions src/mcp_agent/llm/provider_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ class Provider(Enum):
OPENROUTER = "openrouter"
TENSORZERO = "tensorzero" # For TensorZero Gateway
AZURE = "azure" # Azure OpenAI Service
DEEPINFRA = "deepinfra" # DeepInfra
34 changes: 34 additions & 0 deletions src/mcp_agent/llm/providers/augmented_llm_deepinfra.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from mcp_agent.llm.provider_types import Provider
from mcp_agent.llm.providers.augmented_llm_openai import OpenAIAugmentedLLM
from mcp_agent.llm.augmented_llm import RequestParams


DEFAULT_DEEP_INFRA_MODEL = "deepseek-ai/DeepSeek-V3-0324"

class DeepInfraAugmentedLLM(OpenAIAugmentedLLM):

def __init__(self, provider: Provider = Provider.DEEPINFRA, *args, **kwargs) -> None:
super().__init__(provider, *args, **kwargs)


def _initialize_default_params(self, kwargs: dict) -> RequestParams:
"""Initialize OpenAI-specific default parameters"""
chosen_model = kwargs.get("model", DEFAULT_DEEP_INFRA_MODEL)

return RequestParams(
model=chosen_model,
systemPrompt=self.instruction,
parallel_tool_calls=True,
max_iterations=10,
use_history=True,
)

def _base_url(self) -> str:
return "https://api.deepinfra.com/v1/openai"


def _api_key(self):
from mcp_agent.llm.provider_key_manager import ProviderKeyManager

assert self.provider
return ProviderKeyManager.get_api_key(self.provider.value, self.context.config)
Loading