llm-advanced-tools 0.1.2 → 0.1.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "llm-advanced-tools",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Provider-agnostic advanced tool use library for LLMs",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,7 +13,8 @@
13
13
  "test:unit": "jest --testPathPattern=tests/unit",
14
14
  "test:e2e": "jest --testPathPattern=tests/e2e",
15
15
  "lint": "eslint src --ext .ts",
16
- "format": "prettier --write \"src/**/*.ts\""
16
+ "format": "prettier --write \"src/**/*.ts\"",
17
+ "prepublishOnly": "npm run build"
17
18
  },
18
19
  "keywords": [
19
20
  "llm",
@@ -23,19 +24,35 @@
23
24
  "google",
24
25
  "gemini",
25
26
  "function-calling",
26
- "agent"
27
+ "agent",
28
+ "vercel-ai",
29
+ "ai-sdk",
30
+ "gpt-5",
31
+ "claude"
27
32
  ],
28
- "author": "",
33
+ "author": "Het Patel <hetkp8044@gmail.com>",
29
34
  "license": "MIT",
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "https://github.com/yourusername/llm-advanced-tools.git"
38
+ },
39
+ "bugs": {
40
+ "url": "https://github.com/yourusername/llm-advanced-tools/issues"
41
+ },
42
+ "homepage": "https://github.com/yourusername/llm-advanced-tools#readme",
43
+ "files": [
44
+ "dist",
45
+ "README.md",
46
+ "LICENSE"
47
+ ],
30
48
  "dependencies": {
31
49
  "natural": "^6.0.0",
32
- "openai": "^4.0.0",
33
50
  "zod": "^3.22.0"
34
51
  },
35
52
  "peerDependencies": {
36
- "@ai-sdk/anthropic": "^1.0.0",
37
- "@ai-sdk/openai": "^1.0.0",
38
- "ai": "^4.0.0 || ^5.0.0"
53
+ "@ai-sdk/anthropic": "^3.0.0",
54
+ "@ai-sdk/openai": "^3.0.0",
55
+ "ai": "^5.0.0 || ^6.0.0"
39
56
  },
40
57
  "peerDependenciesMeta": {
41
58
  "ai": {
@@ -49,15 +66,15 @@
49
66
  }
50
67
  },
51
68
  "devDependencies": {
52
- "@ai-sdk/anthropic": "^1.0.0",
53
- "@ai-sdk/openai": "^1.0.0",
69
+ "@ai-sdk/anthropic": "^3.0.0",
70
+ "@ai-sdk/openai": "^3.0.0",
54
71
  "@anthropic-ai/sdk": "^0.27.0",
55
72
  "@types/jest": "^29.0.0",
56
73
  "@types/natural": "^5.1.0",
57
74
  "@types/node": "^20.0.0",
58
75
  "@typescript-eslint/eslint-plugin": "^6.0.0",
59
76
  "@typescript-eslint/parser": "^6.0.0",
60
- "ai": "^5.0.116",
77
+ "ai": "^6.0.0",
61
78
  "eslint": "^8.0.0",
62
79
  "jest": "^29.0.0",
63
80
  "prettier": "^3.0.0",
@@ -1,38 +0,0 @@
1
- import OpenAI from 'openai';
2
- import { ProviderAdapter, ProviderCapabilities, ToolDefinition, ChatRequest, ChatResponse, ToolCall, ToolResult } from '../types';
3
- /**
4
- * OpenAI provider adapter
5
- * Emulates advanced tool use features for OpenAI's API
6
- */
7
- export declare class OpenAIAdapter implements ProviderAdapter {
8
- readonly name = "openai";
9
- readonly capabilities: ProviderCapabilities;
10
- private client;
11
- private model;
12
- constructor(apiKey: string, model?: string);
13
- /**
14
- * Format a tool definition for OpenAI's function calling format
15
- */
16
- formatTool(tool: ToolDefinition): Record<string, any>;
17
- /**
18
- * Convert our Message format to OpenAI's format
19
- */
20
- private convertMessages;
21
- /**
22
- * Create a chat completion
23
- */
24
- chat(request: ChatRequest): Promise<ChatResponse>;
25
- /**
26
- * Parse tool calls from OpenAI response
27
- */
28
- parseToolCalls(toolCalls: OpenAI.ChatCompletionMessageToolCall[]): ToolCall[];
29
- /**
30
- * Format tool results for OpenAI
31
- */
32
- formatToolResults(results: ToolResult[]): OpenAI.ChatCompletionMessageParam[];
33
- /**
34
- * Map OpenAI finish reason to our format
35
- */
36
- private mapFinishReason;
37
- }
38
- //# sourceMappingURL=openai.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,UAAU,EAEX,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,qBAAa,aAAc,YAAW,eAAe;IACnD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAOzC;IAEF,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,EAAE,MAAM,EAAE,KAAK,SAAwB;IAKzD;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA6BrD;;OAEG;IACH,OAAO,CAAC,eAAe;IAsCvB;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA0CvD;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,6BAA6B,EAAE,GAAG,QAAQ,EAAE;IAQ7E;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,0BAA0B,EAAE;IAU7E;;OAEG;IACH,OAAO,CAAC,eAAe;CAcxB"}
@@ -1,170 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.OpenAIAdapter = void 0;
7
- const openai_1 = __importDefault(require("openai"));
8
- /**
9
- * OpenAI provider adapter
10
- * Emulates advanced tool use features for OpenAI's API
11
- */
12
- class OpenAIAdapter {
13
- constructor(apiKey, model = 'gpt-4-turbo-preview') {
14
- this.name = 'openai';
15
- this.capabilities = {
16
- supportsNativeToolSearch: false,
17
- supportsNativeCodeExecution: false,
18
- supportsNativeExamples: false,
19
- supportsStreaming: true,
20
- supportsParallelToolCalls: true,
21
- maxTokens: 128000 // GPT-4 Turbo
22
- };
23
- this.client = new openai_1.default({ apiKey });
24
- this.model = model;
25
- }
26
- /**
27
- * Format a tool definition for OpenAI's function calling format
28
- */
29
- formatTool(tool) {
30
- // Extract schema from Zod or use as-is
31
- let schema = tool.inputSchema;
32
- if (typeof schema === 'object' && 'parse' in schema) {
33
- // It's a Zod schema - we'd need to convert it
34
- // For now, assume it's already JSON schema
35
- schema = tool.inputSchema;
36
- }
37
- // Prepare description with examples if available
38
- let description = tool.description;
39
- if (tool.inputExamples && tool.inputExamples.length > 0) {
40
- description += '\n\nExamples:';
41
- tool.inputExamples.forEach((example, i) => {
42
- description += `\n${i + 1}. ${JSON.stringify(example)}`;
43
- });
44
- }
45
- return {
46
- type: 'function',
47
- function: {
48
- name: tool.name,
49
- description,
50
- parameters: schema
51
- }
52
- };
53
- }
54
- /**
55
- * Convert our Message format to OpenAI's format
56
- */
57
- convertMessages(messages) {
58
- return messages.map(msg => {
59
- if (msg.role === 'tool') {
60
- // Tool result message
61
- const toolResults = msg.toolResults || [];
62
- return toolResults.map(result => ({
63
- role: 'tool',
64
- tool_call_id: result.toolCallId,
65
- content: result.error
66
- ? `Error: ${result.error.message}`
67
- : JSON.stringify(result.data)
68
- }));
69
- }
70
- if (msg.toolCalls && msg.toolCalls.length > 0) {
71
- // Assistant message with tool calls
72
- return {
73
- role: 'assistant',
74
- content: typeof msg.content === 'string' ? msg.content : null,
75
- tool_calls: msg.toolCalls.map(tc => ({
76
- id: tc.id,
77
- type: 'function',
78
- function: {
79
- name: tc.name,
80
- arguments: JSON.stringify(tc.input)
81
- }
82
- }))
83
- };
84
- }
85
- // Regular message
86
- return {
87
- role: msg.role,
88
- content: typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content)
89
- };
90
- }).flat();
91
- }
92
- /**
93
- * Create a chat completion
94
- */
95
- async chat(request) {
96
- const messages = this.convertMessages(request.messages);
97
- const tools = request.tools
98
- ?.filter(tool => !tool.deferLoading) // Only send loaded tools
99
- ?.map(tool => this.formatTool(tool));
100
- const completion = await this.client.chat.completions.create({
101
- model: this.model,
102
- messages,
103
- tools: tools && tools.length > 0 ? tools : undefined,
104
- max_tokens: request.maxTokens,
105
- temperature: request.temperature,
106
- stream: false // Streaming not yet supported
107
- });
108
- const choice = completion.choices[0];
109
- const message = choice.message;
110
- // Parse tool calls if any
111
- const toolCalls = message.tool_calls
112
- ? this.parseToolCalls(message.tool_calls)
113
- : [];
114
- return {
115
- message: {
116
- role: 'assistant',
117
- content: message.content || '',
118
- toolCalls
119
- },
120
- usage: completion.usage
121
- ? {
122
- inputTokens: completion.usage.prompt_tokens,
123
- outputTokens: completion.usage.completion_tokens,
124
- totalTokens: completion.usage.total_tokens
125
- }
126
- : undefined,
127
- stopReason: this.mapFinishReason(choice.finish_reason),
128
- toolCalls
129
- };
130
- }
131
- /**
132
- * Parse tool calls from OpenAI response
133
- */
134
- parseToolCalls(toolCalls) {
135
- return toolCalls.map(tc => ({
136
- id: tc.id,
137
- name: tc.function.name,
138
- input: JSON.parse(tc.function.arguments)
139
- }));
140
- }
141
- /**
142
- * Format tool results for OpenAI
143
- */
144
- formatToolResults(results) {
145
- return results.map(result => ({
146
- role: 'tool',
147
- tool_call_id: result.toolCallId,
148
- content: result.error
149
- ? `Error: ${result.error.message}`
150
- : JSON.stringify(result.data)
151
- }));
152
- }
153
- /**
154
- * Map OpenAI finish reason to our format
155
- */
156
- mapFinishReason(reason) {
157
- switch (reason) {
158
- case 'stop':
159
- return 'end_turn';
160
- case 'length':
161
- return 'max_tokens';
162
- case 'tool_calls':
163
- return 'tool_use';
164
- default:
165
- return undefined;
166
- }
167
- }
168
- }
169
- exports.OpenAIAdapter = OpenAIAdapter;
170
- //# sourceMappingURL=openai.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"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"}