Skip to content
Closed
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
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ Symfony AI consists of several lower and higher level **components** and the res
* **Components**
* **[Platform](src/platform/README.md)**: A unified interface to various AI platforms like OpenAI, Anthropic, Azure, Gemini, VertexAI, and more.
* **[Agent](src/agent/README.md)**: Framework for building AI agents that can interact with users and perform tasks.
* **[Tools](src/tools/README.md)**: Collection of third-party tools for AI agents.
* **[Store](src/store/README.md)**: Data storage abstraction with indexing and retrieval for AI applications.
* **[MCP SDK](src/mcp-sdk/README.md)**: SDK for [Model Context Protocol](https://modelcontextprotocol.io) enabling communication between AI agents and tools.
* **Bundles**
Expand Down
1 change: 1 addition & 0 deletions demo/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
"php-http/discovery": "^1.20",
"runtime/frankenphp-symfony": "^0.2.0",
"symfony/ai-bundle": "@dev",
"symfony/ai-tools": "@dev",
"symfony/asset": "~7.3.0",
"symfony/asset-mapper": "~7.3.0",
"symfony/clock": "~7.3.0",
Expand Down
11 changes: 6 additions & 5 deletions demo/config/packages/ai.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ ai:
text: 'Please answer the users question based on Wikipedia and provide a link to the article.'
include_tools: true
tools:
- 'Symfony\AI\Agent\Toolbox\Tool\Wikipedia'
- 'Symfony\AI\Tools\Tool\Wikipedia'
audio:
model:
class: 'Symfony\AI\Platform\Bridge\OpenAi\Gpt'
Expand Down Expand Up @@ -75,14 +75,15 @@ services:
autoconfigure: true

# Symfony\AI\Agent\Toolbox\Tool\Clock: ~
# Symfony\AI\Agent\Toolbox\Tool\OpenMeteo: ~
# Symfony\AI\Agent\Toolbox\Tool\SerpApi:
# $apiKey: '%env(SERP_API_KEY)%'
Symfony\AI\Agent\Toolbox\Tool\Wikipedia: ~
Symfony\AI\Agent\Toolbox\Tool\SimilaritySearch:
$vectorizer: '@ai.vectorizer.openai'
$store: '@ai.store.chroma_db.symfonycon'

# Symfony\AI\Tools\Tool\OpenMeteo: ~
# Symfony\AI\Tools\Tool\SerpApi:
# $apiKey: '%env(SERP_API_KEY)%'
Symfony\AI\Tools\Tool\Wikipedia: ~

Symfony\AI\Store\Document\Loader\RssFeedLoader: ~
Symfony\AI\Store\Document\Transformer\TextTrimTransformer: ~

Expand Down
2 changes: 1 addition & 1 deletion examples/aimlapi/toolcall.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\Wikipedia;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\AiMlApi\Completions;
use Symfony\AI\Platform\Bridge\AiMlApi\PlatformFactory;
use Symfony\AI\Platform\Capability;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\Wikipedia;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/anthropic/toolcall.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\Wikipedia;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\Anthropic\Claude;
use Symfony\AI\Platform\Bridge\Anthropic\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\Wikipedia;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/bedrock/toolcall-claude.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\Wikipedia;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\Anthropic\Claude;
use Symfony\AI\Platform\Bridge\Bedrock\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\Wikipedia;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/bedrock/toolcall-nova.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\Wikipedia;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\Bedrock\Nova\Nova;
use Symfony\AI\Platform\Bridge\Bedrock\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\Wikipedia;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
1 change: 1 addition & 0 deletions examples/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"symfony/ai-agent": "@dev",
"symfony/ai-platform": "@dev",
"symfony/ai-store": "@dev",
"symfony/ai-tools": "@dev",
"symfony/cache": "^7.3|^8.0",
"symfony/console": "^7.3|^8.0",
"symfony/css-selector": "^7.3|^8.0",
Expand Down
2 changes: 1 addition & 1 deletion examples/dockermodelrunner/toolcall.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\Wikipedia;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\DockerModelRunner\Completions;
use Symfony\AI\Platform\Bridge\DockerModelRunner\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\Wikipedia;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/mistral/toolcall-stream.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\YouTubeTranscriber;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\Mistral\Mistral;
use Symfony\AI\Platform\Bridge\Mistral\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\YouTubeTranscriber;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/openai/toolcall-stream.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\Wikipedia;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
use Symfony\AI\Platform\Bridge\OpenAi\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\Wikipedia;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/openai/toolcall.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\YouTubeTranscriber;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
use Symfony\AI\Platform\Bridge\OpenAi\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\YouTubeTranscriber;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/toolbox/brave.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\Brave;
use Symfony\AI\Agent\Toolbox\Tool\Crawler;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
use Symfony\AI\Platform\Bridge\OpenAi\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\Brave;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/toolbox/firecrawl-crawl.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\Firecrawl;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
use Symfony\AI\Platform\Bridge\OpenAi\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\Firecrawl;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/toolbox/firecrawl-map.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\Firecrawl;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
use Symfony\AI\Platform\Bridge\OpenAi\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\Firecrawl;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/toolbox/firecrawl-scrape.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\Firecrawl;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
use Symfony\AI\Platform\Bridge\OpenAi\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\Firecrawl;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/toolbox/mapbox-geocode.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\Mapbox;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
use Symfony\AI\Platform\Bridge\OpenAi\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\Mapbox;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/toolbox/mapbox-reverse-geocode.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\Mapbox;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
use Symfony\AI\Platform\Bridge\OpenAi\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\Mapbox;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/toolbox/serpapi.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\SerpApi;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
use Symfony\AI\Platform\Bridge\OpenAi\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\SerpApi;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/toolbox/tavily.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@

use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Tool\Tavily;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
use Symfony\AI\Platform\Bridge\OpenAi\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Tools\Tool\Tavily;

require_once dirname(__DIR__).'/bootstrap.php';

Expand Down
2 changes: 1 addition & 1 deletion examples/toolbox/weather-event.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@
use Symfony\AI\Agent\Agent;
use Symfony\AI\Agent\Toolbox\AgentProcessor;
use Symfony\AI\Agent\Toolbox\Event\ToolCallsExecuted;
use Symfony\AI\Agent\Toolbox\Tool\OpenMeteo;
use Symfony\AI\Agent\Toolbox\Toolbox;
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
use Symfony\AI\Platform\Bridge\OpenAi\PlatformFactory;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Platform\Result\ObjectResult;
use Symfony\AI\Tools\Tool\OpenMeteo;
use Symfony\Component\EventDispatcher\EventDispatcher;

require_once dirname(__DIR__).'/bootstrap.php';
Expand Down
7 changes: 0 additions & 7 deletions src/agent/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,7 @@ CHANGELOG
- `SimilaritySearch` for RAG/vector store searches
- `Agent` allowing agents to use other agents as tools
- `Clock` for current date/time
- `Brave` for web search integration
- `Crawler` for web page crawling
- `Mapbox` for geocoding addresses to coordinates and reverse geocoding
- `OpenMeteo` for weather information
- `SerpApi` for search engine results
- `Tavily` for AI-powered search
- `Wikipedia` for Wikipedia content retrieval
- `YouTubeTranscriber` for YouTube video transcription
* Add structured output support:
- PHP class output with automatic conversion from LLM responses
- Array structure output with JSON schema validation
Expand Down
4 changes: 2 additions & 2 deletions src/agent/doc/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ Tool calling can be enabled by registering the processors in the agent::

Custom tools can basically be any class, but must configure by the ``#[AsTool]`` attribute::

use Symfony\AI\Toolbox\Attribute\AsTool;
use Symfony\AI\Agent\Toolbox\Attribute\AsTool;

#[AsTool('company_name', 'Provides the name of your company')]
final class CompanyName
Expand All @@ -97,7 +97,7 @@ JsonSerializable interface, to JSON strings for you. So you can return arrays or

You can configure the method to be called by the LLM with the #[AsTool] attribute and have multiple tools per class::

use Symfony\AI\Toolbox\Attribute\AsTool;
use Symfony\AI\Agent\Toolbox\Attribute\AsTool;

#[AsTool(
name: 'weather_current',
Expand Down
18 changes: 3 additions & 15 deletions src/ai-bundle/doc/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -87,15 +87,15 @@ Configuration

# Referencing a agent => agent in agent 🤯
- agent: 'research'
name: 'wikipedia_research'
description: 'Can research on Wikipedia'
name: 'similarity_research'
description: 'Can search through stored documents'
research:
platform: 'ai.platform.anthropic'
model:
class: 'Symfony\AI\Platform\Bridge\Anthropic\Claude'
name: !php/const Symfony\AI\Platform\Bridge\Anthropic\Claude::SONNET_37
tools: # If undefined, all tools are injected into the agent, use "tools: false" to disable tools.
- 'Symfony\AI\Agent\Toolbox\Tool\Wikipedia'
- 'Symfony\AI\Agent\Toolbox\Tool\SimilaritySearch'
fault_tolerant_toolbox: false # Disables fault tolerant toolbox, default is true
search_agent:
platform: 'ai.platform.perplexity'
Expand Down Expand Up @@ -408,19 +408,7 @@ To use existing tools, you can register them as a service:
autoconfigure: true

Symfony\AI\Agent\Toolbox\Tool\Clock: ~
Symfony\AI\Agent\Toolbox\Tool\OpenMeteo: ~
Symfony\AI\Agent\Toolbox\Tool\SerpApi:
$apiKey: '%env(SERP_API_KEY)%'
Symfony\AI\Agent\Toolbox\Tool\SimilaritySearch: ~
Symfony\AI\Agent\Toolbox\Tool\Tavily:
$apiKey: '%env(TAVILY_API_KEY)%'
Symfony\AI\Agent\Toolbox\Tool\Wikipedia: ~
Symfony\AI\Agent\Toolbox\Tool\YouTubeTranscriber: ~
Symfony\AI\Agent\Toolbox\Tool\Firecrawl:
$endpoint: '%env(FIRECRAWL_ENDPOINT)%'
$apiKey: '%env(FIRECRAWL_API_KEY)%'
Symfony\AI\Agent\Toolbox\Tool\Brave:
$apiKey: '%env(BRAVE_API_KEY)%'

Custom tools can be registered by using the ``#[AsTool]`` attribute::

Expand Down
7 changes: 7 additions & 0 deletions src/tools/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/.gitattributes export-ignore
/.gitignore export-ignore
/AGENTS.md export-ignore
/CLAUDE.md export-ignore
/phpunit.xml.dist export-ignore
/phpstan.dist.neon export-ignore
/tests export-ignore
Loading
Loading