Skip to content

Commit 98aa06c

Browse files
committed
Added name to a capability
1 parent 479490e commit 98aa06c

3 files changed

Lines changed: 44 additions & 23 deletions

File tree

src/Agents/Adapters/Anthropic.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,14 +102,19 @@ public function send(Conversation $conversation): array
102102
];
103103
}
104104

105+
$capabilities = [];
106+
foreach ($this->getAgent()->getCapabilities() as $name => $content) {
107+
$capabilities[] = "# " . $name . "\n\n" . $content;
108+
}
109+
105110
$collectedMessages = [];
106111
$response = $client->fetch(
107112
'https://api.anthropic.com/v1/messages',
108113
Client::METHOD_POST,
109114
[
110115
'model' => $this->model,
111116
'system' => $this->getAgent()->getDescription() .
112-
(empty($this->getAgent()->getCapabilities()) ? '' : "\n\n" . implode("\n\n", $this->getAgent()->getCapabilities())),
117+
(empty($capabilities) ? '' : "\n\n" . implode("\n\n", $capabilities)),
113118
'messages' => $messages,
114119
'max_tokens' => $this->maxTokens,
115120
'temperature' => $this->temperature,

src/Agents/Agent.php

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class Agent
1010
protected string $description;
1111

1212
/**
13-
* @var array<string>
13+
* @var array<string, string>
1414
*/
1515
protected array $capabilities;
1616

@@ -51,7 +51,7 @@ public function setDescription(string $description): self
5151
/**
5252
* Set the agent's capabilities
5353
*
54-
* @param array<string> $capabilities
54+
* @param array<string, string> $capabilities
5555
* @return self
5656
*/
5757
public function setCapabilities(array $capabilities): self
@@ -64,14 +64,13 @@ public function setCapabilities(array $capabilities): self
6464
/**
6565
* Add a capability to the agent
6666
*
67-
* @param string $capability
67+
* @param string $name
68+
* @param string $content
6869
* @return self
6970
*/
70-
public function addCapability(string $capability): self
71+
public function addCapability(string $name, string $content): self
7172
{
72-
if (! in_array($capability, $this->capabilities)) {
73-
$this->capabilities[] = $capability;
74-
}
73+
$this->capabilities[$name] = $content;
7574

7675
return $this;
7776
}
@@ -89,7 +88,7 @@ public function getDescription(): string
8988
/**
9089
* Get the agent's capabilities
9190
*
92-
* @return array<string>
91+
* @return array<string, string>
9392
*/
9493
public function getCapabilities(): array
9594
{

tests/Agents/AgentTest.php

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ public function testSetDescription(): void
3939

4040
public function testSetCapabilities(): void
4141
{
42-
$capabilities = ['capability1', 'capability2'];
42+
$capabilities = [
43+
'Capability 1' => 'This is capability 1',
44+
'Capability 2' => 'This is capability 2'
45+
];
4346

4447
$result = $this->agent->setCapabilities($capabilities);
4548

@@ -50,31 +53,45 @@ public function testSetCapabilities(): void
5053
public function testAddCapability(): void
5154
{
5255
// Test adding a single capability
53-
$result = $this->agent->addCapability('capability1');
56+
$result = $this->agent->addCapability('Capability 1', 'This is capability 1');
5457
$this->assertSame($this->agent, $result);
55-
$this->assertEquals(['capability1'], $this->agent->getCapabilities());
56-
57-
// Test adding a duplicate capability (should not add)
58-
$this->agent->addCapability('capability1');
59-
$this->assertEquals(['capability1'], $this->agent->getCapabilities());
60-
61-
// Test adding a second unique capability
62-
$this->agent->addCapability('capability2');
63-
$this->assertEquals(['capability1', 'capability2'], $this->agent->getCapabilities());
58+
$this->assertEquals([
59+
'Capability 1' => 'This is capability 1'
60+
], $this->agent->getCapabilities());
61+
62+
// Test adding a duplicate capability (should update the content)
63+
$this->agent->addCapability('Capability 1', 'Updated content');
64+
$this->assertEquals([
65+
'Capability 1' => 'Updated content'
66+
], $this->agent->getCapabilities());
67+
68+
// Test adding a second capability
69+
$this->agent->addCapability('Capability 2', 'This is capability 2');
70+
$this->assertEquals([
71+
'Capability 1' => 'Updated content',
72+
'Capability 2' => 'This is capability 2'
73+
], $this->agent->getCapabilities());
6474
}
6575

6676
public function testFluentInterface(): void
6777
{
6878
$description = 'Test Description';
69-
$capabilities = ['cap1', 'cap2'];
79+
$capabilities = [
80+
'Cap 1' => 'Content 1',
81+
'Cap 2' => 'Content 2'
82+
];
7083

7184
$result = $this->agent
7285
->setDescription($description)
7386
->setCapabilities($capabilities)
74-
->addCapability('cap3');
87+
->addCapability('Cap 3', 'Content 3');
7588

7689
$this->assertSame($this->agent, $result);
7790
$this->assertEquals($description, $this->agent->getDescription());
78-
$this->assertEquals(['cap1', 'cap2', 'cap3'], $this->agent->getCapabilities());
91+
$this->assertEquals([
92+
'Cap 1' => 'Content 1',
93+
'Cap 2' => 'Content 2',
94+
'Cap 3' => 'Content 3'
95+
], $this->agent->getCapabilities());
7996
}
8097
}

0 commit comments

Comments
 (0)