triangle-utils 1.4.96 → 1.4.98

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.
@@ -9,6 +9,7 @@ export declare class UtilsBedrock {
9
9
  claude_converse(model_id: string, messages: {
10
10
  role: Role;
11
11
  text: string;
12
+ pdf?: string;
12
13
  }[], options?: {
13
14
  system_prompt?: string;
14
15
  max_tokens?: number;
@@ -18,10 +19,6 @@ export declare class UtilsBedrock {
18
19
  web?: boolean;
19
20
  cache_period?: "5m" | "1h";
20
21
  }): Promise<string | undefined>;
21
- claude_invoke(model_id: string, prompt: string, attachment_pdf?: string, options?: {
22
- max_tokens?: number;
23
- print_usage?: boolean;
24
- }): Promise<string | undefined>;
25
22
  nova_invoke(model_id: string, prompt: string): Promise<string | undefined>;
26
23
  llama_invoke(model_id: string, prompt: string, temperature?: number, max_gen_len?: number, top_p?: number): Promise<string | undefined>;
27
24
  gpt_converse(model_id: string, prompt: string, temperature?: number, max_gen_len?: number, top_p?: number): Promise<string | undefined>;
@@ -15,17 +15,35 @@ export class UtilsBedrock {
15
15
  }
16
16
  async claude_converse(model_id, messages, options = {}) {
17
17
  try {
18
+ const message_params = [];
19
+ for (const message of messages) {
20
+ const content = [
21
+ {
22
+ type: "text",
23
+ text: message.text
24
+ }
25
+ ];
26
+ if (message.pdf !== undefined) {
27
+ content.push({
28
+ type: "document",
29
+ source: {
30
+ type: "base64",
31
+ media_type: "application/pdf",
32
+ data: message.pdf
33
+ },
34
+ title: "Attachment",
35
+ citations: { "enabled": false },
36
+ cache_control: { "type": "ephemeral" }
37
+ });
38
+ }
39
+ message_params.push({
40
+ role: message.role,
41
+ content: content
42
+ });
43
+ }
18
44
  const response = await this.anthropic_bedrock_mantle.messages.create({
19
45
  model: model_id,
20
- messages: messages.map(message => ({
21
- role: message.role,
22
- content: [
23
- {
24
- type: "text",
25
- text: message.text
26
- }
27
- ]
28
- })),
46
+ messages: message_params,
29
47
  system: options.system_prompt,
30
48
  tools: options.web === true ? [{ name: "web_search", type: "web_search_20260209" }] : [],
31
49
  max_tokens: options.max_tokens || 1000,
@@ -58,50 +76,57 @@ export class UtilsBedrock {
58
76
  }
59
77
  return undefined;
60
78
  }
61
- async claude_invoke(model_id, prompt, attachment_pdf, options = {}) {
62
- try {
63
- const response = await this.bedrock_runtime.invokeModel({
64
- modelId: model_id,
65
- body: JSON.stringify({
66
- messages: [{
67
- role: "user",
68
- content: [
69
- {
70
- type: "text",
71
- text: prompt
72
- },
73
- ...(attachment_pdf !== undefined ? [{
74
- type: "document",
75
- source: {
76
- type: "base64",
77
- media_type: "application/pdf",
78
- data: attachment_pdf
79
- },
80
- title: "Attachment",
81
- citations: { "enabled": false },
82
- cache_control: { "type": "ephemeral" }
83
- }] : [])
84
- ]
85
- }],
86
- max_tokens: options.max_tokens || 1000,
87
- temperature: 0,
88
- anthropic_version: "bedrock-2023-05-31"
89
- })
90
- });
91
- const body = JSON.parse(this.text_decoder.decode(response.body));
92
- if (options.print_usage !== undefined && options.print_usage) {
93
- console.log(body.usage);
94
- }
95
- return body.content[0].text;
96
- }
97
- catch (error) {
98
- if (error instanceof Error) {
99
- console.log(error.stack);
100
- }
101
- console.log("Failed to get from Bedrock.");
102
- }
103
- return undefined;
104
- }
79
+ // async claude_invoke(
80
+ // model_id : string,
81
+ // prompt : string,
82
+ // attachment_pdf? : string,
83
+ // options : {
84
+ // max_tokens? : number,
85
+ // print_usage? : boolean
86
+ // } = {}
87
+ // ) : Promise<string | undefined> {
88
+ // try {
89
+ // const response = await this.bedrock_runtime.invokeModel({
90
+ // modelId : model_id,
91
+ // body : JSON.stringify({
92
+ // messages : [{
93
+ // role : "user",
94
+ // content : [
95
+ // {
96
+ // type : "text",
97
+ // text : prompt
98
+ // },
99
+ // ...(attachment_pdf !== undefined ? [{
100
+ // type: "document",
101
+ // source: {
102
+ // type: "base64",
103
+ // media_type: "application/pdf",
104
+ // data: attachment_pdf
105
+ // },
106
+ // title: "Attachment",
107
+ // citations: { "enabled": false },
108
+ // cache_control: {"type": "ephemeral"}
109
+ // }] : [])
110
+ // ]
111
+ // }],
112
+ // max_tokens: options.max_tokens || 1000,
113
+ // temperature: 0,
114
+ // anthropic_version: "bedrock-2023-05-31"
115
+ // })
116
+ // })
117
+ // const body = JSON.parse(this.text_decoder.decode(response.body))
118
+ // if (options.print_usage !== undefined && options.print_usage) {
119
+ // console.log(body.usage)
120
+ // }
121
+ // return body.content[0].text
122
+ // } catch (error) {
123
+ // if (error instanceof Error) {
124
+ // console.log(error.stack)
125
+ // }
126
+ // console.log("Failed to get from Bedrock.")
127
+ // }
128
+ // return undefined
129
+ // }
105
130
  async nova_invoke(model_id, prompt) {
106
131
  for (let i = 0; i < 3; i++) {
107
132
  try {
@@ -27,7 +27,10 @@ function is_item(x) {
27
27
  return typeof x === "object" && Object.keys(x).filter(key => typeof key !== "string").length === 0 && !Array.isArray(x);
28
28
  }
29
29
  function convert_input(input) {
30
- if (typeof input === "string") {
30
+ if (input === undefined) {
31
+ return undefined;
32
+ }
33
+ else if (typeof input === "string") {
31
34
  return { S: input };
32
35
  }
33
36
  else if (typeof input === "boolean") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "triangle-utils",
3
- "version": "1.4.96",
3
+ "version": "1.4.98",
4
4
  "main": "dist/src/index.js",
5
5
  "types": "dist/src/index.d.ts",
6
6
  "directories": {
@@ -1,5 +1,6 @@
1
1
  import { BedrockRuntime } from "@aws-sdk/client-bedrock-runtime"
2
2
  import { AnthropicBedrockMantle } from "@anthropic-ai/bedrock-sdk"
3
+ import { ContentBlockParam, MessageParam } from "@anthropic-ai/sdk/resources"
3
4
 
4
5
  const roles = ["user", "assistant", "system"] as const
5
6
 
@@ -24,7 +25,7 @@ export class UtilsBedrock {
24
25
 
25
26
  async claude_converse(
26
27
  model_id : string,
27
- messages : { role : Role, text : string }[],
28
+ messages : { role : Role, text : string, pdf? : string }[],
28
29
  options : {
29
30
  system_prompt? : string,
30
31
  max_tokens? : number,
@@ -36,17 +37,36 @@ export class UtilsBedrock {
36
37
  } = {}
37
38
  ) {
38
39
  try {
40
+ const message_params : MessageParam[] = []
41
+ for (const message of messages) {
42
+ const content : ContentBlockParam[] = [
43
+ {
44
+ type : "text",
45
+ text : message.text
46
+ }
47
+ ]
48
+ if (message.pdf !== undefined) {
49
+ content.push({
50
+ type: "document",
51
+ source: {
52
+ type: "base64",
53
+ media_type: "application/pdf",
54
+ data: message.pdf
55
+ },
56
+ title: "Attachment",
57
+ citations: { "enabled": false },
58
+ cache_control: {"type": "ephemeral"}
59
+ })
60
+ }
61
+ message_params.push({
62
+ role : message.role,
63
+ content : content
64
+ })
65
+
66
+ }
39
67
  const response = await this.anthropic_bedrock_mantle.messages.create({
40
68
  model : model_id,
41
- messages : messages.map(message => ({
42
- role : message.role,
43
- content : [
44
- {
45
- type : "text",
46
- text : message.text
47
- }
48
- ]
49
- })),
69
+ messages : message_params,
50
70
  system : options.system_prompt,
51
71
  tools : options.web === true ? [{ name : "web_search", type : "web_search_20260209" }] : [],
52
72
  max_tokens : options.max_tokens || 1000,
@@ -80,57 +100,57 @@ export class UtilsBedrock {
80
100
  return undefined
81
101
  }
82
102
 
83
- async claude_invoke(
84
- model_id : string,
85
- prompt : string,
86
- attachment_pdf? : string,
87
- options : {
88
- max_tokens? : number,
89
- print_usage? : boolean
90
- } = {}
91
- ) : Promise<string | undefined> {
92
- try {
93
- const response = await this.bedrock_runtime.invokeModel({
94
- modelId : model_id,
95
- body : JSON.stringify({
96
- messages : [{
97
- role : "user",
98
- content : [
99
- {
100
- type : "text",
101
- text : prompt
102
- },
103
- ...(attachment_pdf !== undefined ? [{
104
- type: "document",
105
- source: {
106
- type: "base64",
107
- media_type: "application/pdf",
108
- data: attachment_pdf
109
- },
110
- title: "Attachment",
111
- citations: { "enabled": false },
112
- cache_control: {"type": "ephemeral"}
113
- }] : [])
114
- ]
115
- }],
116
- max_tokens: options.max_tokens || 1000,
117
- temperature: 0,
118
- anthropic_version: "bedrock-2023-05-31"
119
- })
120
- })
121
- const body = JSON.parse(this.text_decoder.decode(response.body))
122
- if (options.print_usage !== undefined && options.print_usage) {
123
- console.log(body.usage)
124
- }
125
- return body.content[0].text
126
- } catch (error) {
127
- if (error instanceof Error) {
128
- console.log(error.stack)
129
- }
130
- console.log("Failed to get from Bedrock.")
131
- }
132
- return undefined
133
- }
103
+ // async claude_invoke(
104
+ // model_id : string,
105
+ // prompt : string,
106
+ // attachment_pdf? : string,
107
+ // options : {
108
+ // max_tokens? : number,
109
+ // print_usage? : boolean
110
+ // } = {}
111
+ // ) : Promise<string | undefined> {
112
+ // try {
113
+ // const response = await this.bedrock_runtime.invokeModel({
114
+ // modelId : model_id,
115
+ // body : JSON.stringify({
116
+ // messages : [{
117
+ // role : "user",
118
+ // content : [
119
+ // {
120
+ // type : "text",
121
+ // text : prompt
122
+ // },
123
+ // ...(attachment_pdf !== undefined ? [{
124
+ // type: "document",
125
+ // source: {
126
+ // type: "base64",
127
+ // media_type: "application/pdf",
128
+ // data: attachment_pdf
129
+ // },
130
+ // title: "Attachment",
131
+ // citations: { "enabled": false },
132
+ // cache_control: {"type": "ephemeral"}
133
+ // }] : [])
134
+ // ]
135
+ // }],
136
+ // max_tokens: options.max_tokens || 1000,
137
+ // temperature: 0,
138
+ // anthropic_version: "bedrock-2023-05-31"
139
+ // })
140
+ // })
141
+ // const body = JSON.parse(this.text_decoder.decode(response.body))
142
+ // if (options.print_usage !== undefined && options.print_usage) {
143
+ // console.log(body.usage)
144
+ // }
145
+ // return body.content[0].text
146
+ // } catch (error) {
147
+ // if (error instanceof Error) {
148
+ // console.log(error.stack)
149
+ // }
150
+ // console.log("Failed to get from Bedrock.")
151
+ // }
152
+ // return undefined
153
+ // }
134
154
 
135
155
  async nova_invoke(model_id : string, prompt : string) : Promise<string | undefined> {
136
156
  for (let i = 0; i < 3; i++) {
@@ -25,8 +25,10 @@ function is_item(x : any): x is Record<string, any> {
25
25
  return typeof x === "object" && Object.keys(x).filter(key => typeof key !== "string").length === 0 && !Array.isArray(x)
26
26
  }
27
27
 
28
- function convert_input(input : string | boolean | number | any[] | Set<any> | Record<string, any>) : AttributeValue | undefined {
29
- if (typeof input === "string") {
28
+ function convert_input(input : string | boolean | number | any[] | Set<any> | Record<string, any> | undefined) : AttributeValue | undefined {
29
+ if (input === undefined) {
30
+ return undefined
31
+ } else if (typeof input === "string") {
30
32
  return { S : input }
31
33
  } else if (typeof input === "boolean") {
32
34
  return { BOOL : input }