MCP (模型上下文协议) for Laravel - 一个强大的AI框架,用于构建智能应用程序。基于 inspector-apm/neuron-ai
安装最新版本的包:
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,正如你在介绍中所说。
如上例所示,代理自动具有正在进行对话的记忆。更多关于记忆的信息,请参阅文档。
使用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) {
// ... 检索视频转录
})
];
}
}
更多关于工具的信息,请参阅文档。
无需手动实现工具,您可以使用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用例,您必须扩展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许可发布。