adrenallen / ai-agents-laravel
用于在Laravel之上构建AI代理的软件包
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.8
- illuminate/support: ^10.40 || ^11.0
- openai-php/client: >=0.8.0
- twilio/sdk: ^7.5
- yethee/tiktoken: ^0.5.0
Requires (Dev)
- phpunit/phpunit: ^10.5
README
使用AI构建不应该困难,AI代理尽力让在Laravel中使用AI变得简单。
✍️花更多时间编写你关心的代码,只需提供注释,让系统处理其他部分!
📦代理可以高度组合。只需包含你需要的特质,让你的AI具备完成工作的正确能力。
class TextingAgent extends BaseAgent { use \Adrenallen\AiAgentsLaravel\AgentTraits\SMSTrait; // Access to send SMS via Twilio, all handled automatically public string $prePrompt = "You are a helpful assistant"; // Pre-prompt }
🔧需要自定义功能或有新的AgentTrait想法?创建自己的!只需遵循注释结构,系统将完成其余部分以确保AI理解和可以使用你的函数!
/** * @aiagent-description Adds two numbers together * @param int $a * @param int $b * @return int */ public function add(int $a, int $b): int { return $a + $b; }
🚀用20行代码创建一个新的AI代理!
目录
🔧设置
通过composer安装
composer require adrenallen/ai-agents-laravel
您需要发布配置文件并填写您希望使用的功能的详细信息。您可以通过运行以下命令发布配置文件
php artisan vendor:publish --provider="Adrenallen\AiAgentsLaravel\AiAgentsLaravelServiceProvider"
👨💻使用
在控制台/测试中
您可以直接使用提供的artisan命令与代理聊天
php artisan ai:chat <代理类>
例如,要与包含的TestingAgent
聊天
php artisan ai:chat TestingAgent
您可以通过输入exit
来退出聊天。
在代码中
$chat = new \Adrenallen\AiAgentsLaravel\ChatModels\ChatGPT(); // or $chat = new \Adrenallen\AiAgentsLaravel\ChatModels\AzureOpenAI(); // or $chat = new \Adrenallen\AiAgentsLaravel\ChatModels\AnthropicClaude(); $agent = new \Adrenallen\AiAgentsLaravel\Agents\TestingAgent($chat); // Ensures the agent gets a pre-prompt at creation $agent->ask("Hello, is this thing on?"); // Yes, I'm here. How can I assist you today? $agent->lastCallMetadata; /* return $agent->lastCallMetadata; = [ "id" => "chatcmpl-8123ABC", "created" => 1705545737, "model" => "gpt-4", "systemFingerprint" => "fp_l33t123", "usage" => OpenAI\Responses\Chat\CreateResponseUsage {#5004 +promptTokens: 365, +completionTokens: 17, +totalTokens: 382, }, ] */
🤖创建一个新的代理
要创建新的代理,您希望扩展BaseAgent
类并定义任何附加功能。
注意:如果您希望代理始终调用函数,则可以扩展FunctionsAgent
!
prePrompt
属性是传递给聊天模型的预提示。这应该描述您希望代理如何思考和行动。
您可以使用AgentTraits
下的特质来引入您可能需要的特定功能。
例如,如果您希望代理能够发送短信,则可以在您的代理类中引入SMSTrait
。机器人将自动知道它可以发送短信。
这是一个可以发送短信、执行数学运算和获取天气的代理示例。
这是创建代理所需的总代码。
class TestingAgent extends BaseAgent { use \Adrenallen\AiAgentsLaravel\AgentTraits\SMSTrait; // Access to send SMS via Twilio use \Adrenallen\AiAgentsLaravel\AgentTraits\MathTrait; // Access to math functions use \Adrenallen\AiAgentsLaravel\AgentTraits\DateTrait; // Access to date functions use \Adrenallen\AiAgentsLaravel\AgentTraits\WeatherTrait; // Access to openweathermap API public string $prePrompt = "You are a helpful assistant"; // Pre-prompt }
定义代理函数
要定义代理函数,您应遵循PHP DocBlock来描述参数、返回类型和方法。
为了使代理能够访问函数,您必须在类中包含一个额外的PHPDoc块参数,称为@aiagent-description
。这必须是一个描述函数的字符串。任何包含该属性的代理类中的函数都将自动对代理可用。
添加函数的示例
/** * @param int $a * @param int $b * @return int * @aiagent-description Adds two numbers together */ public function add(int $a, int $b): int { return $a + $b; }
🧰代理特质
代理特质可用于为代理插件和玩功能。一些包含在此软件包中的AgentTraits
命名空间下。
DateTrait
- 提供访问日期函数(例如compareDates
或getCurrentDate
)
MathTrait
- 提供访问数学函数(例如add
或subtract
)
SMSTrait
- 提供通过Twilio发送短信的功能(例如sendSMS
)
WeatherTrait
- 提供访问天气函数(例如getWeather
)
GeocodingTrait
- 提供访问地理编码函数(例如getLatLongOfLocation
)
强烈建议您将可重用函数放入特性中,然后将该特性拉入您的代理中。
📝聊天模型
目前支持
- GPT-3.5-turbo
- GPT-4
- Azure OpenAI
- Anthropic Claude
添加新的聊天模型
可以通过扩展 AbstractChatModel
类来添加新模型。该类提供了与聊天模型交互所需的基本功能。
❤️贡献
如果您有任何问题、问题或想法,鼓励您开启新的问题。
也欢迎提交拉取请求!