adrenallen / ai-agents-laravel

用于在Laravel之上构建AI代理的软件包

v6.0.1 2024-07-10 16:17 UTC

README

Latest Stable Version Latest Unstable Version License PHP Version Require

使用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 - 提供访问日期函数(例如compareDatesgetCurrentDate

MathTrait - 提供访问数学函数(例如addsubtract

SMSTrait - 提供通过Twilio发送短信的功能(例如sendSMS

WeatherTrait - 提供访问天气函数(例如getWeather

GeocodingTrait - 提供访问地理编码函数(例如getLatLongOfLocation

强烈建议您将可重用函数放入特性中,然后将该特性拉入您的代理中。

📝聊天模型

目前支持

  • GPT-3.5-turbo
  • GPT-4
  • Azure OpenAI
  • Anthropic Claude

添加新的聊天模型

可以通过扩展 AbstractChatModel 类来添加新模型。该类提供了与聊天模型交互所需的基本功能。

❤️贡献

如果您有任何问题、问题或想法,鼓励您开启新的问题。

也欢迎提交拉取请求!

请参阅我们的贡献指南