claude-php/claude-3-api

Claude 3.5 Sonnet API的PHP包

0.1.9 2024-07-18 03:08 UTC

This package is auto-updated.

Last update: 2024-09-18 03:32:42 UTC


README

一个用于与Anthropic的Claude 3 API交互的强大PHP包,支持文本和视觉功能。

功能

  • 发送消息到Claude 3的简单易用界面
  • 支持基于文本的对话,使用简单聊天方法
  • 视觉功能 - 发送图像和文本提示
  • 支持实时响应的流式传输
  • 工具使用支持
  • 全面错误处理
  • 使用PHPUnit全面测试

安装

您可以通过composer安装此包

composer require claude-php/claude-3-api

用法

基本聊天用法

对于简单的文本交互,您可以使用chat方法

基本聊天用法

对于简单的文本交互,您可以使用chat方法以多种方式

  1. 发送单个字符串消息
use Claude\Claude3Api\Client;
use Claude\Claude3Api\Config;

// Create a configuration object with your API key
$config = new Config('your-api-key-here');

// Create a client
$client = new Client($config);

// Send a single string message
$response = $client->chat("Hello, Claude");

echo "Claude's response: " . $response->getContent()[0]['text'];
  1. 发送单个消息作为数组
$response = $client->chat(['role' => 'user', "content" => "Hello, Claude"]);

echo "Claude's response: " . $response->getContent()[0]['text'];
  1. 使用多个消息继续对话
$response = $client->chat([
    ['role' => 'user', "content" => "Hello, Claude"],
    ['role' => 'assistant', "content" => "Hello! It's nice to meet you. How can I assist you today?"],
    ['role' => 'user', "content" => "What is the population of Sydney?"],
]);

echo "Claude's response: " . $response->getContent()[0]['text'];
  1. 指定模型(可选)
$response = $client->chat([
    'model' => 'claude-3-opus-20240229',
    'messages' => [
        ['role' => 'user', "content" => "Hello, Claude"],
    ]
]);

echo "Claude's response: " . $response->getContent()[0]['text'];

chat方法灵活,可以处理各种输入格式,使与Claude在不同场景下的交互变得容易。

高级用法

对于更复杂的情况,您仍然可以使用带有MessageRequest对象的sendMessage方法

use Claude\Claude3Api\Models\Message;
use Claude\Claude3Api\Models\Content\TextContent;
use Claude\Claude3Api\Requests\MessageRequest;

// Create a message request
$messageRequest = new MessageRequest();

// Add a user message
$userMessage = new Message('user', [
    new TextContent('What is the capital of France?')
]);
$messageRequest->addMessage($userMessage);

// Send the message and get the response
$response = $client->sendMessage($messageRequest);

// Process the response
echo "Claude's response: " . $response->getContent()[0]['text'];

视觉功能

use Claude\Claude3Api\Models\Content\ImageContent;

// Send a message with both image and text
$response = $client->sendMessageWithImage('path/to/image.jpg', 'What is in this image?');

echo "Claude's description: " . $response->getContent()[0]['text'];

流式传输

$client->streamMessage($messageRequest, function ($chunk) {
    if ($chunk instanceof MessageResponse) {
        // Handle complete message response
    } elseif (is_array($chunk) && isset($chunk['delta']['text'])) {
        echo $chunk['delta']['text'];
    }
});

使用工具

use Claude\Claude3Api\Models\Tool;

$weatherTool = new Tool(
    'get_weather',
    'Get the current weather in a given location',
    [
        'type' => 'object',
        'properties' => [
            'location' => [
                'type' => 'string',
                'description' => 'The city and state, e.g. San Francisco, CA'
            ],
            'unit' => [
                'type' => 'string',
                'enum' => ['celsius', 'fahrenheit'],
                'description' => 'The unit of temperature'
            ]
        ],
        'required' => ['location']
    ]
);

$messageRequest->addTool($weatherTool);

// Create a message request and add the tool
$messageRequest = new MessageRequest();
$messageRequest->addTool($weatherTool);

// Add a user message that might trigger tool use
$userMessage = new Message('user', [
    new TextContent('What\'s the weather like in New York?')
]);
$messageRequest->addMessage($userMessage);

// Send the message
$response = $client->sendMessage($messageRequest);

// The response might include tool use
foreach ($response->getContent() as $content) {
    if ($content['type'] === 'text') {
        echo "Claude's response: " . $content['text'] . "\n";
    } elseif ($content['type'] === 'tool_use') {
        echo "Tool used: " . $content['name'] . "\n";
        echo "Tool input: " . json_encode($content['input']) . "\n";
        
        // Here you would typically execute the actual tool
        // and send the result back to Claude in a new message
    }
}

测试

composer test

贡献

欢迎贡献!请随时提交Pull Request。

许可证

这个Claude 3 API包是开源软件,许可协议为MIT许可

支持

如果您遇到任何问题或有任何疑问,请在该GitHub存储库中打开一个问题。

免责声明

此包与Anthropic无官方关联。请确保在使用此包时遵守Anthropic的服务条款。