Skip to content

Commit 5ffea33

Browse files
committed
feature: add examples for bedrock
1 parent e98141a commit 5ffea33

File tree

7 files changed

+210
-0
lines changed

7 files changed

+210
-0
lines changed

.env

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ AZURE_OPENAI_WHISPER_API_VERSION=
2929
AZURE_LLAMA_BASEURL=
3030
AZURE_LLAMA_KEY=
3131

32+
# For using Bedrock
33+
AWS_ACCESS_KEY_ID=
34+
AWS_SECRET_ACCESS_KEY=
35+
AWS_DEFAULT_REGION=
36+
3237
# Hugging Face Access Token
3338
HUGGINGFACE_KEY=
3439

examples/bedrock/chat-claude.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
use AsyncAws\BedrockRuntime\BedrockRuntimeClient;
4+
use PhpLlm\LlmChain\Bridge\Anthropic\Claude;
5+
use PhpLlm\LlmChain\Bridge\Bedrock\PlatformFactory;
6+
use PhpLlm\LlmChain\Chain;
7+
use PhpLlm\LlmChain\Model\Message\Message;
8+
use PhpLlm\LlmChain\Model\Message\MessageBag;
9+
use Symfony\Component\Dotenv\Dotenv;
10+
11+
require_once dirname(__DIR__, 2).'/vendor/autoload.php';
12+
(new Dotenv())->loadEnv(dirname(__DIR__, 2).'/.env');
13+
14+
if (empty($_ENV['AWS_ACCESS_KEY_ID']) || empty($_ENV['AWS_SECRET_ACCESS_KEY']) || empty($_ENV['AWS_DEFAULT_REGION'])
15+
) {
16+
echo 'Please set the AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_DEFAULT_REGION environment variables.'.PHP_EOL;
17+
exit(1);
18+
}
19+
20+
$platform = PlatformFactory::create(
21+
new BedrockRuntimeClient()
22+
);
23+
$llm = new Claude();
24+
25+
$chain = new Chain($platform, $llm);
26+
$messages = new MessageBag(
27+
Message::forSystem('You are a pirate and you write funny.'),
28+
Message::ofUser('What is the Symfony framework?'),
29+
);
30+
$response = $chain->call($messages);
31+
32+
echo $response->getContent().PHP_EOL;

examples/bedrock/chat-llama.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
use AsyncAws\BedrockRuntime\BedrockRuntimeClient;
4+
use PhpLlm\LlmChain\Bridge\Bedrock\PlatformFactory;
5+
use PhpLlm\LlmChain\Bridge\Meta\Llama;
6+
use PhpLlm\LlmChain\Chain;
7+
use PhpLlm\LlmChain\Model\Message\Message;
8+
use PhpLlm\LlmChain\Model\Message\MessageBag;
9+
use Symfony\Component\Dotenv\Dotenv;
10+
11+
require_once dirname(__DIR__, 2).'/vendor/autoload.php';
12+
(new Dotenv())->loadEnv(dirname(__DIR__, 2).'/.env');
13+
14+
if (empty($_ENV['AWS_ACCESS_KEY_ID']) || empty($_ENV['AWS_SECRET_ACCESS_KEY']) || empty($_ENV['AWS_DEFAULT_REGION'])
15+
) {
16+
echo 'Please set the AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_DEFAULT_REGION environment variables.'.PHP_EOL;
17+
exit(1);
18+
}
19+
20+
$platform = PlatformFactory::create(
21+
new BedrockRuntimeClient()
22+
);
23+
$llm = new Llama('llama-3.2-3b-instruct');
24+
25+
$chain = new Chain($platform, $llm);
26+
$messages = new MessageBag(
27+
Message::forSystem('You are a pirate and you write funny.'),
28+
Message::ofUser('What is the Symfony framework?'),
29+
);
30+
$response = $chain->call($messages);
31+
32+
echo $response->getContent().PHP_EOL;

examples/bedrock/chat-nova-binary.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
use AsyncAws\BedrockRuntime\BedrockRuntimeClient;
4+
use PhpLlm\LlmChain\Bridge\Bedrock\Nova\Nova;
5+
use PhpLlm\LlmChain\Bridge\Bedrock\PlatformFactory;
6+
use PhpLlm\LlmChain\Chain;
7+
use PhpLlm\LlmChain\Model\Message\Message;
8+
use PhpLlm\LlmChain\Model\Message\MessageBag;
9+
use Symfony\Component\Dotenv\Dotenv;
10+
11+
require_once dirname(__DIR__, 2).'/vendor/autoload.php';
12+
(new Dotenv())->loadEnv(dirname(__DIR__, 2).'/.env');
13+
14+
if (empty($_ENV['AWS_ACCESS_KEY_ID']) || empty($_ENV['AWS_SECRET_ACCESS_KEY']) || empty($_ENV['AWS_DEFAULT_REGION'])
15+
) {
16+
echo 'Please set the AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_DEFAULT_REGION environment variables.'.PHP_EOL;
17+
exit(1);
18+
}
19+
20+
$platform = PlatformFactory::create(
21+
new BedrockRuntimeClient()
22+
);
23+
$llm = new Nova(Nova::PRO);
24+
25+
$chain = new Chain($platform, $llm);
26+
$messages = new MessageBag(
27+
Message::forSystem('You are a pirate and you write funny.'),
28+
Message::ofUser('What is the Symfony framework?'),
29+
);
30+
$response = $chain->call($messages);
31+
32+
echo $response->getContent().PHP_EOL;
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
use AsyncAws\BedrockRuntime\BedrockRuntimeClient;
4+
use PhpLlm\LlmChain\Bridge\Anthropic\Claude;
5+
use PhpLlm\LlmChain\Bridge\Bedrock\PlatformFactory;
6+
use PhpLlm\LlmChain\Chain;
7+
use PhpLlm\LlmChain\Model\Message\Content\Image;
8+
use PhpLlm\LlmChain\Model\Message\Message;
9+
use PhpLlm\LlmChain\Model\Message\MessageBag;
10+
use Symfony\Component\Dotenv\Dotenv;
11+
12+
require_once dirname(__DIR__, 2).'/vendor/autoload.php';
13+
(new Dotenv())->loadEnv(dirname(__DIR__, 2).'/.env');
14+
15+
if (empty($_ENV['AWS_ACCESS_KEY_ID']) || empty($_ENV['AWS_SECRET_ACCESS_KEY']) || empty($_ENV['AWS_DEFAULT_REGION'])
16+
) {
17+
echo 'Please set the AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_DEFAULT_REGION environment variables.'.PHP_EOL;
18+
exit(1);
19+
}
20+
21+
$platform = PlatformFactory::create(
22+
new BedrockRuntimeClient()
23+
);
24+
$llm = new Claude();
25+
26+
$chain = new Chain($platform, $llm);
27+
$messages = new MessageBag(
28+
Message::forSystem('You are an image analyzer bot that helps identify the content of images.'),
29+
Message::ofUser(
30+
'Describe the image as a comedian would do it.',
31+
Image::fromFile(dirname(__DIR__, 2).'/tests/Fixture/image.jpg'),
32+
),
33+
);
34+
$response = $chain->call($messages);
35+
36+
echo $response->getContent().PHP_EOL;

examples/bedrock/image-nova.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
use AsyncAws\BedrockRuntime\BedrockRuntimeClient;
4+
use PhpLlm\LlmChain\Bridge\Bedrock\Nova\Nova;
5+
use PhpLlm\LlmChain\Bridge\Bedrock\PlatformFactory;
6+
use PhpLlm\LlmChain\Chain;
7+
use PhpLlm\LlmChain\Model\Message\Content\Image;
8+
use PhpLlm\LlmChain\Model\Message\Message;
9+
use PhpLlm\LlmChain\Model\Message\MessageBag;
10+
use Symfony\Component\Dotenv\Dotenv;
11+
12+
require_once dirname(__DIR__, 2).'/vendor/autoload.php';
13+
(new Dotenv())->loadEnv(dirname(__DIR__, 2).'/.env');
14+
15+
if (empty($_ENV['AWS_ACCESS_KEY_ID']) || empty($_ENV['AWS_SECRET_ACCESS_KEY']) || empty($_ENV['AWS_DEFAULT_REGION'])
16+
) {
17+
echo 'Please set the AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_DEFAULT_REGION environment variables.'.PHP_EOL;
18+
exit(1);
19+
}
20+
21+
$platform = PlatformFactory::create(
22+
new BedrockRuntimeClient()
23+
);
24+
$llm = new Nova(Nova::PRO);
25+
26+
$chain = new Chain($platform, $llm);
27+
$messages = new MessageBag(
28+
Message::forSystem('You are an image analyzer bot that helps identify the content of images.'),
29+
Message::ofUser(
30+
'Describe the image as a comedian would do it.',
31+
Image::fromFile(dirname(__DIR__, 2).'/tests/Fixture/image.jpg'),
32+
),
33+
);
34+
$response = $chain->call($messages);
35+
36+
echo $response->getContent().PHP_EOL;

examples/bedrock/toolcall-claude.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
use AsyncAws\BedrockRuntime\BedrockRuntimeClient;
4+
use PhpLlm\LlmChain\Bridge\Anthropic\Claude;
5+
use PhpLlm\LlmChain\Bridge\Bedrock\PlatformFactory;
6+
use PhpLlm\LlmChain\Chain;
7+
use PhpLlm\LlmChain\Chain\Toolbox\ChainProcessor;
8+
use PhpLlm\LlmChain\Chain\Toolbox\Tool\Wikipedia;
9+
use PhpLlm\LlmChain\Chain\Toolbox\Toolbox;
10+
use PhpLlm\LlmChain\Model\Message\Message;
11+
use PhpLlm\LlmChain\Model\Message\MessageBag;
12+
use Symfony\Component\Dotenv\Dotenv;
13+
use Symfony\Component\HttpClient\HttpClient;
14+
15+
require_once dirname(__DIR__, 2).'/vendor/autoload.php';
16+
(new Dotenv())->loadEnv(dirname(__DIR__, 2).'/.env');
17+
18+
if (empty($_ENV['AWS_ACCESS_KEY_ID']) || empty($_ENV['AWS_SECRET_ACCESS_KEY']) || empty($_ENV['AWS_DEFAULT_REGION'])
19+
) {
20+
echo 'Please set the AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_DEFAULT_REGION environment variables.'.PHP_EOL;
21+
exit(1);
22+
}
23+
24+
$platform = PlatformFactory::create(
25+
new BedrockRuntimeClient()
26+
);
27+
$llm = new Claude();
28+
29+
$wikipedia = new Wikipedia(HttpClient::create());
30+
$toolbox = Toolbox::create($wikipedia);
31+
$processor = new ChainProcessor($toolbox);
32+
$chain = new Chain($platform, $llm, [$processor], [$processor]);
33+
34+
$messages = new MessageBag(Message::ofUser('Who is the current chancellor of Germany?'));
35+
$response = $chain->call($messages);
36+
37+
echo $response->getContent().PHP_EOL;

0 commit comments

Comments
 (0)