@agentica/core 0.8.3 → 0.9.0-dev.20250302

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.
Files changed (91) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +419 -404
  3. package/lib/Agentica.d.ts +10 -9
  4. package/lib/Agentica.js.map +1 -1
  5. package/lib/chatgpt/ChatGptAgent.d.ts +2 -1
  6. package/lib/chatgpt/ChatGptAgent.js.map +1 -1
  7. package/lib/chatgpt/ChatGptCallFunctionAgent.d.ts +2 -1
  8. package/lib/chatgpt/ChatGptCallFunctionAgent.js +3 -1
  9. package/lib/chatgpt/ChatGptCallFunctionAgent.js.map +1 -1
  10. package/lib/chatgpt/ChatGptCancelFunctionAgent.d.ts +3 -2
  11. package/lib/chatgpt/ChatGptCancelFunctionAgent.js +55 -2
  12. package/lib/chatgpt/ChatGptCancelFunctionAgent.js.map +1 -1
  13. package/lib/chatgpt/ChatGptDescribeFunctionAgent.d.ts +2 -1
  14. package/lib/chatgpt/ChatGptDescribeFunctionAgent.js.map +1 -1
  15. package/lib/chatgpt/ChatGptHistoryDecoder.d.ts +2 -1
  16. package/lib/chatgpt/ChatGptHistoryDecoder.js.map +1 -1
  17. package/lib/chatgpt/ChatGptInitializeFunctionAgent.d.ts +2 -1
  18. package/lib/chatgpt/ChatGptInitializeFunctionAgent.js +63 -1
  19. package/lib/chatgpt/ChatGptInitializeFunctionAgent.js.map +1 -1
  20. package/lib/chatgpt/ChatGptSelectFunctionAgent.d.ts +2 -1
  21. package/lib/chatgpt/ChatGptSelectFunctionAgent.js +55 -2
  22. package/lib/chatgpt/ChatGptSelectFunctionAgent.js.map +1 -1
  23. package/lib/functional/createHttpLlmApplication.js +826 -798
  24. package/lib/functional/createHttpLlmApplication.js.map +1 -1
  25. package/lib/index.mjs +987 -804
  26. package/lib/index.mjs.map +1 -1
  27. package/lib/internal/AgenticaDefaultPrompt.d.ts +2 -1
  28. package/lib/internal/AgenticaDefaultPrompt.js.map +1 -1
  29. package/lib/internal/AgenticaOperationComposer.d.ts +5 -4
  30. package/lib/internal/AgenticaOperationComposer.js +1 -1
  31. package/lib/internal/AgenticaOperationComposer.js.map +1 -1
  32. package/lib/internal/AgenticaPromptFactory.d.ts +3 -2
  33. package/lib/internal/AgenticaPromptFactory.js.map +1 -1
  34. package/lib/internal/AgenticaPromptTransformer.d.ts +5 -4
  35. package/lib/internal/AgenticaPromptTransformer.js.map +1 -1
  36. package/lib/structures/IAgenticaConfig.d.ts +4 -3
  37. package/lib/structures/IAgenticaContext.d.ts +7 -6
  38. package/lib/structures/IAgenticaController.d.ts +8 -8
  39. package/lib/structures/IAgenticaEvent.d.ts +19 -18
  40. package/lib/structures/IAgenticaExecutor.d.ts +7 -6
  41. package/lib/structures/IAgenticaOperation.d.ts +4 -4
  42. package/lib/structures/IAgenticaOperationCollection.d.ts +6 -5
  43. package/lib/structures/IAgenticaOperationSelection.d.ts +4 -4
  44. package/lib/structures/IAgenticaPrompt.d.ts +11 -11
  45. package/lib/structures/IAgenticaProps.d.ts +9 -4
  46. package/lib/structures/IAgenticaProvider.d.ts +22 -27
  47. package/lib/structures/IAgenticaSystemPrompt.d.ts +8 -7
  48. package/package.json +6 -9
  49. package/prompts/cancel.md +4 -4
  50. package/prompts/common.md +2 -2
  51. package/prompts/describe.md +6 -6
  52. package/prompts/execute.md +6 -6
  53. package/prompts/initialize.md +2 -2
  54. package/prompts/select.md +6 -6
  55. package/src/Agentica.ts +323 -318
  56. package/src/chatgpt/ChatGptAgent.ts +75 -71
  57. package/src/chatgpt/ChatGptCallFunctionAgent.ts +448 -445
  58. package/src/chatgpt/ChatGptCancelFunctionAgent.ts +287 -283
  59. package/src/chatgpt/ChatGptDescribeFunctionAgent.ts +52 -51
  60. package/src/chatgpt/ChatGptHistoryDecoder.ts +88 -87
  61. package/src/chatgpt/ChatGptInitializeFunctionAgent.ts +88 -88
  62. package/src/chatgpt/ChatGptSelectFunctionAgent.ts +319 -318
  63. package/src/functional/createHttpLlmApplication.ts +63 -63
  64. package/src/index.ts +19 -19
  65. package/src/internal/AgenticaConstant.ts +4 -4
  66. package/src/internal/AgenticaDefaultPrompt.ts +43 -39
  67. package/src/internal/AgenticaOperationComposer.ts +87 -82
  68. package/src/internal/AgenticaPromptFactory.ts +32 -30
  69. package/src/internal/AgenticaPromptTransformer.ts +86 -83
  70. package/src/internal/AgenticaTokenUsageAggregator.ts +115 -115
  71. package/src/internal/MathUtil.ts +3 -3
  72. package/src/internal/Singleton.ts +22 -22
  73. package/src/internal/__map_take.ts +15 -15
  74. package/src/structures/IAgenticaConfig.ts +123 -121
  75. package/src/structures/IAgenticaContext.ts +129 -128
  76. package/src/structures/IAgenticaController.ts +132 -130
  77. package/src/structures/IAgenticaEvent.ts +229 -224
  78. package/src/structures/IAgenticaExecutor.ts +156 -152
  79. package/src/structures/IAgenticaOperation.ts +64 -64
  80. package/src/structures/IAgenticaOperationCollection.ts +52 -50
  81. package/src/structures/IAgenticaOperationSelection.ts +69 -69
  82. package/src/structures/IAgenticaPrompt.ts +178 -173
  83. package/src/structures/IAgenticaProps.ts +70 -64
  84. package/src/structures/IAgenticaProvider.ts +39 -45
  85. package/src/structures/IAgenticaSystemPrompt.ts +124 -122
  86. package/src/structures/IAgenticaTokenUsage.ts +107 -107
  87. package/src/structures/internal/__IChatCancelFunctionsApplication.ts +23 -23
  88. package/src/structures/internal/__IChatFunctionReference.ts +21 -21
  89. package/src/structures/internal/__IChatInitialApplication.ts +15 -15
  90. package/src/structures/internal/__IChatSelectFunctionsApplication.ts +24 -24
  91. package/src/typings/AgenticaSource.ts +6 -6
@@ -1,51 +1,52 @@
1
- import OpenAI from "openai";
2
-
3
- import { AgenticaDefaultPrompt } from "../internal/AgenticaDefaultPrompt";
4
- import { AgenticaSystemPrompt } from "../internal/AgenticaSystemPrompt";
5
- import { IAgenticaContext } from "../structures/IAgenticaContext";
6
- import { IAgenticaPrompt } from "../structures/IAgenticaPrompt";
7
- import { ChatGptHistoryDecoder } from "./ChatGptHistoryDecoder";
8
-
9
- export namespace ChatGptDescribeFunctionAgent {
10
- export const execute = async (
11
- ctx: IAgenticaContext,
12
- histories: IAgenticaPrompt.IExecute[],
13
- ): Promise<IAgenticaPrompt.IDescribe[]> => {
14
- if (histories.length === 0) return [];
15
- const completion: OpenAI.ChatCompletion = await ctx.request("describe", {
16
- messages: [
17
- // COMMON SYSTEM PROMPT
18
- {
19
- role: "system",
20
- content: AgenticaDefaultPrompt.write(ctx.config),
21
- } satisfies OpenAI.ChatCompletionSystemMessageParam,
22
- // FUNCTION CALLING HISTORIES
23
- ...histories.map(ChatGptHistoryDecoder.decode).flat(),
24
- // SYSTEM PROMPT
25
- {
26
- role: "system",
27
- content:
28
- ctx.config?.systemPrompt?.describe?.(histories) ??
29
- AgenticaSystemPrompt.DESCRIBE,
30
- },
31
- ],
32
- });
33
- const descriptions: IAgenticaPrompt.IDescribe[] = completion.choices
34
- .map((choice) =>
35
- choice.message.role === "assistant" && !!choice.message.content?.length
36
- ? choice.message.content
37
- : null,
38
- )
39
- .filter((str) => str !== null)
40
- .map(
41
- (content) =>
42
- ({
43
- type: "describe",
44
- executions: histories,
45
- text: content,
46
- }) satisfies IAgenticaPrompt.IDescribe,
47
- );
48
- for (const describe of descriptions) await ctx.dispatch(describe);
49
- return descriptions;
50
- };
51
- }
1
+ import { ILlmSchema } from "@samchon/openapi";
2
+ import OpenAI from "openai";
3
+
4
+ import { AgenticaDefaultPrompt } from "../internal/AgenticaDefaultPrompt";
5
+ import { AgenticaSystemPrompt } from "../internal/AgenticaSystemPrompt";
6
+ import { IAgenticaContext } from "../structures/IAgenticaContext";
7
+ import { IAgenticaPrompt } from "../structures/IAgenticaPrompt";
8
+ import { ChatGptHistoryDecoder } from "./ChatGptHistoryDecoder";
9
+
10
+ export namespace ChatGptDescribeFunctionAgent {
11
+ export const execute = async <Model extends ILlmSchema.Model>(
12
+ ctx: IAgenticaContext<Model>,
13
+ histories: IAgenticaPrompt.IExecute<Model>[],
14
+ ): Promise<IAgenticaPrompt.IDescribe<Model>[]> => {
15
+ if (histories.length === 0) return [];
16
+ const completion: OpenAI.ChatCompletion = await ctx.request("describe", {
17
+ messages: [
18
+ // COMMON SYSTEM PROMPT
19
+ {
20
+ role: "system",
21
+ content: AgenticaDefaultPrompt.write(ctx.config),
22
+ } satisfies OpenAI.ChatCompletionSystemMessageParam,
23
+ // FUNCTION CALLING HISTORIES
24
+ ...histories.map(ChatGptHistoryDecoder.decode).flat(),
25
+ // SYSTEM PROMPT
26
+ {
27
+ role: "system",
28
+ content:
29
+ ctx.config?.systemPrompt?.describe?.(histories) ??
30
+ AgenticaSystemPrompt.DESCRIBE,
31
+ },
32
+ ],
33
+ });
34
+ const descriptions: IAgenticaPrompt.IDescribe<Model>[] = completion.choices
35
+ .map((choice) =>
36
+ choice.message.role === "assistant" && !!choice.message.content?.length
37
+ ? choice.message.content
38
+ : null,
39
+ )
40
+ .filter((str) => str !== null)
41
+ .map(
42
+ (content) =>
43
+ ({
44
+ type: "describe",
45
+ executions: histories,
46
+ text: content,
47
+ }) satisfies IAgenticaPrompt.IDescribe<Model>,
48
+ );
49
+ for (const describe of descriptions) await ctx.dispatch(describe);
50
+ return descriptions;
51
+ };
52
+ }
@@ -1,87 +1,88 @@
1
- import OpenAI from "openai";
2
-
3
- import { IAgenticaPrompt } from "../structures/IAgenticaPrompt";
4
-
5
- export namespace ChatGptHistoryDecoder {
6
- export const decode = (
7
- history: IAgenticaPrompt,
8
- ): OpenAI.ChatCompletionMessageParam[] => {
9
- // NO NEED TO DECODE DESCRIBE
10
- if (history.type === "describe") return [];
11
- else if (history.type === "text")
12
- return [
13
- {
14
- role: history.role,
15
- content: history.text,
16
- },
17
- ];
18
- else if (history.type === "select" || history.type === "cancel")
19
- return [
20
- {
21
- role: "assistant",
22
- tool_calls: [
23
- {
24
- type: "function",
25
- id: history.id,
26
- function: {
27
- name: `${history.type}Functions`,
28
- arguments: JSON.stringify({
29
- functions: history.operations.map((t) => ({
30
- name: t.function.name,
31
- reason: t.reason,
32
- })),
33
- }),
34
- },
35
- },
36
- ],
37
- },
38
- {
39
- role: "tool",
40
- tool_call_id: history.id,
41
- content: "",
42
- },
43
- ];
44
-
45
- return [
46
- {
47
- role: "assistant",
48
- tool_calls: [
49
- {
50
- type: "function",
51
- id: history.id,
52
- function: {
53
- name: history.function.name,
54
- arguments: JSON.stringify(history.arguments),
55
- },
56
- },
57
- ],
58
- },
59
- {
60
- role: "tool",
61
- tool_call_id: history.id,
62
- content: JSON.stringify({
63
- function: {
64
- protocol: history.protocol,
65
- description: history.function.description,
66
- parameters: history.function.parameters,
67
- output: history.function.output,
68
- ...(history.protocol === "http"
69
- ? {
70
- method: history.function.method,
71
- path: history.function.path,
72
- }
73
- : {}),
74
- },
75
- ...(history.protocol === "http"
76
- ? {
77
- status: history.value.status,
78
- data: history.value.body,
79
- }
80
- : {
81
- value: history.value,
82
- }),
83
- }),
84
- },
85
- ];
86
- };
87
- }
1
+ import { ILlmSchema } from "@samchon/openapi";
2
+ import OpenAI from "openai";
3
+
4
+ import { IAgenticaPrompt } from "../structures/IAgenticaPrompt";
5
+
6
+ export namespace ChatGptHistoryDecoder {
7
+ export const decode = <Model extends ILlmSchema.Model>(
8
+ history: IAgenticaPrompt<Model>,
9
+ ): OpenAI.ChatCompletionMessageParam[] => {
10
+ // NO NEED TO DECODE DESCRIBE
11
+ if (history.type === "describe") return [];
12
+ else if (history.type === "text")
13
+ return [
14
+ {
15
+ role: history.role,
16
+ content: history.text,
17
+ },
18
+ ];
19
+ else if (history.type === "select" || history.type === "cancel")
20
+ return [
21
+ {
22
+ role: "assistant",
23
+ tool_calls: [
24
+ {
25
+ type: "function",
26
+ id: history.id,
27
+ function: {
28
+ name: `${history.type}Functions`,
29
+ arguments: JSON.stringify({
30
+ functions: history.operations.map((t) => ({
31
+ name: t.function.name,
32
+ reason: t.reason,
33
+ })),
34
+ }),
35
+ },
36
+ },
37
+ ],
38
+ },
39
+ {
40
+ role: "tool",
41
+ tool_call_id: history.id,
42
+ content: "",
43
+ },
44
+ ];
45
+
46
+ return [
47
+ {
48
+ role: "assistant",
49
+ tool_calls: [
50
+ {
51
+ type: "function",
52
+ id: history.id,
53
+ function: {
54
+ name: history.function.name,
55
+ arguments: JSON.stringify(history.arguments),
56
+ },
57
+ },
58
+ ],
59
+ },
60
+ {
61
+ role: "tool",
62
+ tool_call_id: history.id,
63
+ content: JSON.stringify({
64
+ function: {
65
+ protocol: history.protocol,
66
+ description: history.function.description,
67
+ parameters: history.function.parameters,
68
+ output: history.function.output,
69
+ ...(history.protocol === "http"
70
+ ? {
71
+ method: history.function.method,
72
+ path: history.function.path,
73
+ }
74
+ : {}),
75
+ },
76
+ ...(history.protocol === "http"
77
+ ? {
78
+ status: history.value.status,
79
+ data: history.value.body,
80
+ }
81
+ : {
82
+ value: history.value,
83
+ }),
84
+ }),
85
+ },
86
+ ];
87
+ };
88
+ }
@@ -1,88 +1,88 @@
1
- import { ILlmFunction } from "@samchon/openapi";
2
- import OpenAI from "openai";
3
- import typia from "typia";
4
-
5
- import { AgenticaDefaultPrompt } from "../internal/AgenticaDefaultPrompt";
6
- import { AgenticaSystemPrompt } from "../internal/AgenticaSystemPrompt";
7
- import { IAgenticaContext } from "../structures/IAgenticaContext";
8
- import { IAgenticaPrompt } from "../structures/IAgenticaPrompt";
9
- import { __IChatInitialApplication } from "../structures/internal/__IChatInitialApplication";
10
- import { ChatGptHistoryDecoder } from "./ChatGptHistoryDecoder";
11
-
12
- export namespace ChatGptInitializeFunctionAgent {
13
- export const execute = async (
14
- ctx: IAgenticaContext,
15
- ): Promise<IAgenticaPrompt[]> => {
16
- //----
17
- // EXECUTE CHATGPT API
18
- //----
19
- const completion: OpenAI.ChatCompletion = await ctx.request("initialize", {
20
- messages: [
21
- // COMMON SYSTEM PROMPT
22
- {
23
- role: "system",
24
- content: AgenticaDefaultPrompt.write(ctx.config),
25
- } satisfies OpenAI.ChatCompletionSystemMessageParam,
26
- // PREVIOUS HISTORIES
27
- ...ctx.histories.map(ChatGptHistoryDecoder.decode).flat(),
28
- // USER INPUT
29
- {
30
- role: "user",
31
- content: ctx.prompt.text,
32
- },
33
- {
34
- // SYSTEM PROMPT
35
- role: "system",
36
- content:
37
- ctx.config?.systemPrompt?.initialize?.(ctx.histories) ??
38
- AgenticaSystemPrompt.INITIALIZE,
39
- },
40
- ],
41
- // GETTER FUNCTION
42
- tools: [
43
- {
44
- type: "function",
45
- function: {
46
- name: FUNCTION.name,
47
- description: FUNCTION.description,
48
- parameters: FUNCTION.parameters as any,
49
- },
50
- },
51
- ],
52
- tool_choice: "auto",
53
- parallel_tool_calls: false,
54
- });
55
-
56
- //----
57
- // PROCESS COMPLETION
58
- //----
59
- const prompts: IAgenticaPrompt[] = [];
60
- for (const choice of completion.choices) {
61
- if (
62
- choice.message.role === "assistant" &&
63
- !!choice.message.content?.length
64
- )
65
- prompts.push({
66
- type: "text",
67
- role: "assistant",
68
- text: choice.message.content,
69
- });
70
- }
71
- if (
72
- completion.choices.some(
73
- (c) =>
74
- !!c.message.tool_calls?.some(
75
- (tc) =>
76
- tc.type === "function" && tc.function.name === FUNCTION.name,
77
- ),
78
- )
79
- )
80
- await ctx.initialize();
81
- return prompts;
82
- };
83
- }
84
-
85
- const FUNCTION: ILlmFunction<"chatgpt"> = typia.llm.application<
86
- __IChatInitialApplication,
87
- "chatgpt"
88
- >().functions[0]!;
1
+ import { ILlmFunction, ILlmSchema } from "@samchon/openapi";
2
+ import OpenAI from "openai";
3
+ import typia from "typia";
4
+
5
+ import { AgenticaDefaultPrompt } from "../internal/AgenticaDefaultPrompt";
6
+ import { AgenticaSystemPrompt } from "../internal/AgenticaSystemPrompt";
7
+ import { IAgenticaContext } from "../structures/IAgenticaContext";
8
+ import { IAgenticaPrompt } from "../structures/IAgenticaPrompt";
9
+ import { __IChatInitialApplication } from "../structures/internal/__IChatInitialApplication";
10
+ import { ChatGptHistoryDecoder } from "./ChatGptHistoryDecoder";
11
+
12
+ export namespace ChatGptInitializeFunctionAgent {
13
+ export const execute = async <Model extends ILlmSchema.Model>(
14
+ ctx: IAgenticaContext<Model>,
15
+ ): Promise<IAgenticaPrompt<Model>[]> => {
16
+ //----
17
+ // EXECUTE CHATGPT API
18
+ //----
19
+ const completion: OpenAI.ChatCompletion = await ctx.request("initialize", {
20
+ messages: [
21
+ // COMMON SYSTEM PROMPT
22
+ {
23
+ role: "system",
24
+ content: AgenticaDefaultPrompt.write(ctx.config),
25
+ } satisfies OpenAI.ChatCompletionSystemMessageParam,
26
+ // PREVIOUS HISTORIES
27
+ ...ctx.histories.map(ChatGptHistoryDecoder.decode).flat(),
28
+ // USER INPUT
29
+ {
30
+ role: "user",
31
+ content: ctx.prompt.text,
32
+ },
33
+ {
34
+ // SYSTEM PROMPT
35
+ role: "system",
36
+ content:
37
+ ctx.config?.systemPrompt?.initialize?.(ctx.histories) ??
38
+ AgenticaSystemPrompt.INITIALIZE,
39
+ },
40
+ ],
41
+ // GETTER FUNCTION
42
+ tools: [
43
+ {
44
+ type: "function",
45
+ function: {
46
+ name: FUNCTION.name,
47
+ description: FUNCTION.description,
48
+ parameters: FUNCTION.parameters as any,
49
+ },
50
+ },
51
+ ],
52
+ tool_choice: "auto",
53
+ parallel_tool_calls: false,
54
+ });
55
+
56
+ //----
57
+ // PROCESS COMPLETION
58
+ //----
59
+ const prompts: IAgenticaPrompt<Model>[] = [];
60
+ for (const choice of completion.choices) {
61
+ if (
62
+ choice.message.role === "assistant" &&
63
+ !!choice.message.content?.length
64
+ )
65
+ prompts.push({
66
+ type: "text",
67
+ role: "assistant",
68
+ text: choice.message.content,
69
+ });
70
+ }
71
+ if (
72
+ completion.choices.some(
73
+ (c) =>
74
+ !!c.message.tool_calls?.some(
75
+ (tc) =>
76
+ tc.type === "function" && tc.function.name === FUNCTION.name,
77
+ ),
78
+ )
79
+ )
80
+ await ctx.initialize();
81
+ return prompts;
82
+ };
83
+ }
84
+
85
+ const FUNCTION: ILlmFunction<"chatgpt"> = typia.llm.application<
86
+ __IChatInitialApplication,
87
+ "chatgpt"
88
+ >().functions[0]!;