返回市场
MCP-for-Laravel

MCP-for-Laravel

作者:SettledCo6 星标更新:2025-04-09

项目介绍

MCP for Laravel

最新稳定版本 许可证

MCP (模型上下文协议) for Laravel - 一个强大的AI框架,用于构建智能应用程序。基于 inspector-apm/neuron-ai

要求

  • PHP: ^8.0
  • Laravel: ^11.0

官方文档

前往官方文档

安装

安装最新版本的包:

composer require settled/mcp-laravel

创建代理

Laravel的MCP为您提供了一个可以扩展的代理类,以继承框架的主要功能,并创建完全功能的代理。此类会自动管理一些高级机制,如内存、工具和函数调用,直到RAG系统。让我们创建第一个代理,扩展Settled\MCP\Agent类:

use Settled\MCP\Agent;
use Settled\MCP\SystemPrompt;
use Settled\MCP\Providers\AIProviderInterface;
use Settled\MCP\Providers\Anthropic\Anthropic;

class YouTubeAgent extends Agent
{
    public function provider(): AIProviderInterface
    {
        return new Anthropic(
            key: 'ANTHROPIC_API_KEY',
            model: 'ANTHROPIC_MODEL',
        );
    }

    public function instructions(): string
    {
        return new SystemPrompt(
            background: ["您是一个专门撰写YouTube视频摘要的人工智能代理。"],
            steps: [
                "获取YouTube视频的网址,或请求用户提供。",
                "使用可用的工具检索视频的转录。",
                "编写摘要。",
            ],
            output: [
                "用流畅的文字写一段摘要,不使用列表。",
                "在摘要后添加三句话作为视频最重要的三个要点。",
            ]
        );
    }
}

SystemPrompt类旨在接受您的基本指令并为底层模型构建一致的提示,减少提示工程的工作量。

与代理通信

向代理发送提示以从底层LLM获得响应:

$agent = YouTubeAgent::make();

$response = $agent->run(new UserMessage("你好,我是Valerio。你是谁?"));
echo $response->getContent();
// 我是帮助你总结视频的YouTube助手。

$response = $agent->run(
    new UserMessage("你知道我的名字吗?")
);
echo $response->getContent();
// 你的名字是Valerio,正如你在介绍中所说。

如上例所示,代理自动具有正在进行对话的记忆。更多关于记忆的信息,请参阅文档

支持的LLM提供商

使用Neuron,您可以仅通过一行代码在LLM提供商之间切换,而不会对代理实现产生任何影响。支持的提供商包括:

工具及函数调用

您可以使用一组Tool为代理添加执行具体任务的能力:

use NeuronAI\Agent;
use NeuronAI\SystemPrompt;
use NeuronAI\Providers\AIProviderInterface;
use NeuronAI\Providers\Anthropic\Anthropic;
use NeuronAI\Tools\Tool;
use NeuronAI\Tools\ToolProperty;

class YouTubeAgent extends Agent
{
    public function provider(): AIProviderInterface
    {
        return new Anthropic(
            key: 'ANTHROPIC_API_KEY',
            model: 'ANTHROPIC_MODEL',
        );
    }

    public function instructions(): string
    {
        return new SystemPrompt(
            background: ["您是一个专门撰写YouTube视频摘要的人工智能代理。"],
            steps: [
                "获取YouTube视频的网址,或请求用户提供。",
                "使用可用的工具检索视频的转录。",
                "编写摘要。",
            ],
            output: [
                "用流畅的文字写一段摘要,不使用列表。",
                "在摘要后添加三句话作为视频最重要的三个要点。",
            ]
        );
    }

    public function tools(): array
    {
        return [
            Tool::make(
                'get_transcription',
                '检索YouTube视频的转录。',
            )->addProperty(
                new ToolProperty(
                    name: 'video_url',
                    type: 'string',
                    description: 'YouTube视频的网址。',
                    required: true
                )
            )->setCallable(function (string $video_url) {
                // ... 检索视频转录
            })
        ];
    }
}

更多关于工具的信息,请参阅文档

MCP服务器连接器

无需手动实现工具,您可以使用McpConnector组件连接由MCP服务器暴露的工具:

use NeuronAI\Agent;
use NeuronAI\MCP\McpConnector;
use NeuronAI\Providers\AIProviderInterface;
use NeuronAI\Providers\Anthropic\Anthropic;
use NeuronAI\Tools\Tool;
use Ne
uronAI\Tools\ToolProperty;

class SEOAgent extends Agent
{
    public function provider(): AIProviderInterface
    {
        return new Anthropic(
            key: 'ANTHROPIC_API_KEY',
            model: 'ANTHROPIC_MODEL',
        );
    }

    public function instructions(): string
    {
        return new SystemPrompt(
            background: ["扮演SEO(搜索引擎优化)专家的角色。"],
            steps: [
                "分析一篇文章的内容。",
                "提供如何改进内容以在Google搜索中获得更好排名的建议。",
            ],
            output: ["按部分结构化您的分析。每个建议一个部分。"]
        );
    }

    public function tools(): array
    {
        return [
            // 连接MCP服务器
            ...McpConnector::make([
                'command' => 'npx',
                'args' => ['-y', '@modelcontextprotocol/server-everything'],
            ])->tools(),

            // 实现自定义工具
            Tool::make(
                'get_transcription',
                '检索YouTube视频的转录。',
            )->addProperty(
                new ToolProperty(
                    name: 'video_url',
                    type: 'string',
                    description: 'YouTube视频的网址。',
                    required: true
                )
            )->setCallable(function (string $video_url) {
                // ... 检索视频转录
            })
        ];
    }
}

更多关于MCP连接器的信息,请参阅文档

实现RAG系统

对于RAG用例,您必须扩展NeuronAI\RAG\RAG类而不是默认的代理类。

要创建RAG,除了AI提供商外,还需要附加一些其他组件,例如向量存储嵌入式提供商

这是一个RAG实现的例子:

use NeuronAI\Providers\AIProviderInterface;
use NeuronAI\Providers\Anthropic\Anthropic;
use NeuronAI\RAG\Embeddings\EmbeddingsProviderInterface;
use NeuronAI\RAG\Embeddings\VoyageEmbeddingProvider;
use NeuronAI\RAG\RAG;
use NeuronAI\RAG\VectorStore\PineconeVectoreStore;
use NeuronAI\RAG\VectorStore\VectorStoreInterface;

class MyChatBot extends RAG
{
    public function provider(): AIProviderInterface
    {
        return new Anthropic(
            key: 'ANTHROPIC_API_KEY',
            model: 'ANTHROPIC_MODEL',
        );
    }

    public function embeddings(): EmbeddingsProviderInterface
    {
        return new VoyageEmbeddingProvider(
            key: 'VOYAGE_API_KEY',
            model: 'VOYAGE_MODEL'
        );
    }

    public function vectorStore(): VectorStoreInterface
   
    {
        return new PineconeVectoreStore(
            key: 'PINECONE_API_KEY',
            indexUrl: 'PINECONE_INDEX_URL'
        );
    }
}

更多关于RAG的信息,请参阅文档

官方文档

前往官方文档

贡献

我们鼓励您参与Neuron AI框架的开发!请查看贡献指南了解如何进行。加入我们!

许可证

此捆绑包根据MIT许可发布。