claude-php / claude-3-api
Claude 3.5 Sonnet API的PHP包
0.1.9
2024-07-18 03:08 UTC
Requires
- php: ^8.0
- ext-json: *
- guzzlehttp/guzzle: ^7.8
Requires (Dev)
- phpunit/phpunit: ^11.2
README
一个用于与Anthropic的Claude 3 API交互的强大PHP包,支持文本和视觉功能。
功能
- 发送消息到Claude 3的简单易用界面
- 支持基于文本的对话,使用简单聊天方法
- 视觉功能 - 发送图像和文本提示
- 支持实时响应的流式传输
- 工具使用支持
- 全面错误处理
- 使用PHPUnit全面测试
安装
您可以通过composer安装此包
composer require claude-php/claude-3-api
用法
基本聊天用法
对于简单的文本交互,您可以使用chat方法
基本聊天用法
对于简单的文本交互,您可以使用chat方法以多种方式
- 发送单个字符串消息
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'];
- 发送单个消息作为数组
$response = $client->chat(['role' => 'user', "content" => "Hello, Claude"]); echo "Claude's response: " . $response->getContent()[0]['text'];
- 使用多个消息继续对话
$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'];
- 指定模型(可选)
$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的服务条款。