symposium 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Agent.js +13 -12
- package/Response.js +4 -0
- package/Symposium.js +7 -0
- package/Thread.js +4 -0
- package/index.js +0 -1
- package/models/AnthropicModel.js +41 -0
- package/models/Claude3Haiku.js +7 -0
- package/models/Claude3Opus.js +7 -0
- package/models/Claude3Sonnet.js +7 -0
- package/models/Gpt4.js +1 -1
- package/models/OpenAIModel.js +13 -3
- package/package.json +2 -1
package/Agent.js
CHANGED
|
@@ -107,7 +107,8 @@ export default class Agent {
|
|
|
107
107
|
|
|
108
108
|
const completion = await this.generateCompletion(thread);
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
if (completion)
|
|
111
|
+
await this.handleCompletion(thread, completion);
|
|
111
112
|
|
|
112
113
|
const reversedMiddlewares = [...this.middlewares.values()];
|
|
113
114
|
reversedMiddlewares.reverse();
|
|
@@ -148,18 +149,18 @@ export default class Agent {
|
|
|
148
149
|
}
|
|
149
150
|
|
|
150
151
|
async handleCompletion(thread, completion) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
152
|
+
for (let message of completion.messages)
|
|
153
|
+
thread.addMessage(message);
|
|
154
|
+
|
|
155
|
+
if (completion.function) {
|
|
156
|
+
thread.addAssistantMessage('', {
|
|
157
|
+
name: completion.function.name,
|
|
158
|
+
arguments: JSON.stringify(completion.function_call.args),
|
|
159
|
+
});
|
|
159
160
|
}
|
|
160
161
|
|
|
161
|
-
if (completion
|
|
162
|
-
return this.callFunction(thread, completion.
|
|
162
|
+
if (completion.function)
|
|
163
|
+
return this.callFunction(thread, completion.function);
|
|
163
164
|
else
|
|
164
165
|
return thread.storeState();
|
|
165
166
|
}
|
|
@@ -195,7 +196,7 @@ export default class Agent {
|
|
|
195
196
|
await this.log('function_call', function_call);
|
|
196
197
|
|
|
197
198
|
try {
|
|
198
|
-
const response = await functions.get(function_call.name).tool.callFunction(thread, function_call.name, function_call.
|
|
199
|
+
const response = await functions.get(function_call.name).tool.callFunction(thread, function_call.name, function_call.args);
|
|
199
200
|
thread.addFunctionMessage(response, function_call.name);
|
|
200
201
|
await this.log('function_response', response);
|
|
201
202
|
} catch (error) {
|
package/Response.js
ADDED
package/Symposium.js
CHANGED
|
@@ -4,6 +4,9 @@ import Gpt4 from "./models/Gpt4.js";
|
|
|
4
4
|
import Gpt4Turbo from "./models/Gpt4Turbo.js";
|
|
5
5
|
import Gpt4Vision from "./models/Gpt4Vision.js";
|
|
6
6
|
import Whisper from "./models/Whisper.js";
|
|
7
|
+
import Claude3Haiku from "symposium/models/Claude3Haiku.js";
|
|
8
|
+
import Claude3Sonnet from "symposium/models/Claude3Sonnet.js";
|
|
9
|
+
import Claude3Opus from "symposium/models/Claude3Opus.js";
|
|
7
10
|
|
|
8
11
|
export default class Symposium {
|
|
9
12
|
static models = new Map();
|
|
@@ -15,6 +18,10 @@ export default class Symposium {
|
|
|
15
18
|
this.loadModel(new Gpt4Vision());
|
|
16
19
|
this.loadModel(new Whisper());
|
|
17
20
|
|
|
21
|
+
this.loadModel(new Claude3Haiku());
|
|
22
|
+
this.loadModel(new Claude3Sonnet());
|
|
23
|
+
this.loadModel(new Claude3Opus());
|
|
24
|
+
|
|
18
25
|
return Redis.init();
|
|
19
26
|
}
|
|
20
27
|
|
package/Thread.js
CHANGED
package/index.js
CHANGED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import Model from "../Model.js";
|
|
2
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
3
|
+
|
|
4
|
+
export default class AnthropicModel extends Model {
|
|
5
|
+
anthropic;
|
|
6
|
+
supports_tools = false;
|
|
7
|
+
|
|
8
|
+
getAnthropic() {
|
|
9
|
+
if (!this.anthropic)
|
|
10
|
+
this.anthropic = new Anthropic({apiKey: process.env.ANTHROPIC_API_KEY});
|
|
11
|
+
|
|
12
|
+
return this.anthropic;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async generate(thread, payload = {}, functions = []) {
|
|
16
|
+
const [system, messages] = this.convertMessages(thread);
|
|
17
|
+
|
|
18
|
+
const completion_payload = {
|
|
19
|
+
model: this.name,
|
|
20
|
+
system,
|
|
21
|
+
max_tokens: 4096,
|
|
22
|
+
messages,
|
|
23
|
+
...payload,
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const message = await this.getAnthropic().messages.create(completion_payload);
|
|
27
|
+
return message.content;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
convertMessages(thread) {
|
|
31
|
+
let system = [], messages = [];
|
|
32
|
+
for (let message of thread.getMessagesJson()) {
|
|
33
|
+
if (message.role === 'system')
|
|
34
|
+
system.push(message.content);
|
|
35
|
+
else
|
|
36
|
+
messages.push(message);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return [system.length ? system.join("\n") : undefined, messages];
|
|
40
|
+
}
|
|
41
|
+
}
|
package/models/Gpt4.js
CHANGED
package/models/OpenAIModel.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import Response from "../Response.js";
|
|
1
2
|
import Model from "../Model.js";
|
|
2
3
|
import OpenAI from "openai";
|
|
4
|
+
import Message from "../Message.js";
|
|
3
5
|
|
|
4
6
|
export default class OpenAIModel extends Model {
|
|
5
7
|
openai;
|
|
@@ -28,10 +30,18 @@ export default class OpenAIModel extends Model {
|
|
|
28
30
|
|
|
29
31
|
const chatCompletion = await this.getOpenAi().chat.completions.create(completion_payload);
|
|
30
32
|
|
|
33
|
+
const response = new Response;
|
|
31
34
|
const completion = chatCompletion.choices[0].message;
|
|
32
|
-
if (completion.
|
|
33
|
-
|
|
35
|
+
if (completion.content)
|
|
36
|
+
response.messages.push(new Message('assistant', completion.content));
|
|
37
|
+
|
|
38
|
+
if (completion.function_call && completion.function_call.arguments) {
|
|
39
|
+
response.function = {
|
|
40
|
+
name: completion.function_call.name,
|
|
41
|
+
args: JSON.parse(completion.function_call.arguments),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
34
44
|
|
|
35
|
-
return
|
|
45
|
+
return response;
|
|
36
46
|
}
|
|
37
47
|
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "symposium",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.2",
|
|
5
5
|
"description": "Agents",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"author": "Domenico Giambra",
|
|
8
8
|
"license": "ISC",
|
|
9
9
|
"dependencies": {
|
|
10
|
+
"@anthropic-ai/sdk": "^0.19.1",
|
|
10
11
|
"@travio/redis": "^2.0.0",
|
|
11
12
|
"openai": "^4.12.1",
|
|
12
13
|
"tiktoken": "^1.0.10"
|