kopia lustrzana https://github.com/transitive-bullshit/chatgpt-api
feat: add openai example
rodzic
190ef0e100
commit
4b4e7e0510
|
@ -15,7 +15,7 @@ async function main() {
|
||||||
tools: createAISDKTools(weather),
|
tools: createAISDKTools(weather),
|
||||||
toolChoice: 'required',
|
toolChoice: 'required',
|
||||||
temperature: 0,
|
temperature: 0,
|
||||||
system: 'You are a weather assistant. Be as concise as possible.',
|
system: 'You are a helpful assistant. Be as concise as possible.',
|
||||||
prompt: 'What is the weather in San Francisco?'
|
prompt: 'What is the weather in San Francisco?'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ async function main() {
|
||||||
const runner = createAIRunner({
|
const runner = createAIRunner({
|
||||||
chatModel: new ChatModel({ params: { model: 'gpt-4o', temperature: 0 } }),
|
chatModel: new ChatModel({ params: { model: 'gpt-4o', temperature: 0 } }),
|
||||||
functions: createDexterFunctions(weather),
|
functions: createDexterFunctions(weather),
|
||||||
systemMessage: 'You are a weather assistant. Be as concise as possible.'
|
systemMessage: 'You are a helpful assistant. Be as concise as possible.'
|
||||||
})
|
})
|
||||||
|
|
||||||
const result = await runner('What is the weather in San Francisco?')
|
const result = await runner('What is the weather in San Francisco?')
|
||||||
|
|
|
@ -23,7 +23,7 @@ async function main() {
|
||||||
role: 'system',
|
role: 'system',
|
||||||
content: [
|
content: [
|
||||||
{
|
{
|
||||||
text: 'You are a weather assistant. Be as concise as possible.'
|
text: 'You are a helpful assistant. Be as concise as possible.'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ async function main() {
|
||||||
llm: new ChatOpenAI({ model: 'gpt-4o', temperature: 0 }),
|
llm: new ChatOpenAI({ model: 'gpt-4o', temperature: 0 }),
|
||||||
tools,
|
tools,
|
||||||
prompt: ChatPromptTemplate.fromMessages([
|
prompt: ChatPromptTemplate.fromMessages([
|
||||||
['system', 'You are a weather assistant. Be as concise as possible.'],
|
['system', 'You are a helpful assistant. Be as concise as possible.'],
|
||||||
['placeholder', '{chat_history}'],
|
['placeholder', '{chat_history}'],
|
||||||
['human', '{input}'],
|
['human', '{input}'],
|
||||||
['placeholder', '{agent_scratchpad}']
|
['placeholder', '{agent_scratchpad}']
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
#!/usr/bin/env node
|
||||||
|
import 'dotenv/config'
|
||||||
|
|
||||||
|
import OpenAI from 'openai'
|
||||||
|
import { default as assert } from 'tiny-invariant'
|
||||||
|
|
||||||
|
import { WeatherClient } from '../../src/index.js'
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const weather = new WeatherClient()
|
||||||
|
const openai = new OpenAI()
|
||||||
|
|
||||||
|
const messages: OpenAI.ChatCompletionMessageParam[] = [
|
||||||
|
{
|
||||||
|
role: 'system',
|
||||||
|
content: 'You are a helpful assistant. Be as concise as possible.'
|
||||||
|
},
|
||||||
|
{ role: 'user', content: 'What is the weather in San Francisco?' }
|
||||||
|
]
|
||||||
|
|
||||||
|
const res0 = await openai.chat.completions.create({
|
||||||
|
messages,
|
||||||
|
model: 'gpt-4o',
|
||||||
|
temperature: 0,
|
||||||
|
tools: weather.tools.specs,
|
||||||
|
tool_choice: 'required'
|
||||||
|
})
|
||||||
|
const message0 = res0.choices[0]?.message!
|
||||||
|
console.log(JSON.stringify(message0, null, 2))
|
||||||
|
assert(message0.role === 'assistant')
|
||||||
|
assert(message0.tool_calls?.[0]?.function?.name === 'get_current_weather')
|
||||||
|
|
||||||
|
const getCurrentWeather = weather.tools.get('get_current_weather')!.function
|
||||||
|
assert(getCurrentWeather)
|
||||||
|
|
||||||
|
const toolParams = message0.tool_calls[0].function.arguments
|
||||||
|
assert(typeof toolParams === 'string')
|
||||||
|
const toolResult = await getCurrentWeather(toolParams)
|
||||||
|
|
||||||
|
messages.push(message0)
|
||||||
|
messages.push({
|
||||||
|
role: 'tool',
|
||||||
|
tool_call_id: message0.tool_calls[0].id,
|
||||||
|
content: JSON.stringify(toolResult)
|
||||||
|
})
|
||||||
|
|
||||||
|
const res1 = await openai.chat.completions.create({
|
||||||
|
messages,
|
||||||
|
model: 'gpt-4o',
|
||||||
|
temperature: 0,
|
||||||
|
tools: weather.tools.specs
|
||||||
|
})
|
||||||
|
const message1 = res1.choices[0].message
|
||||||
|
console.log(JSON.stringify(message1, null, 2))
|
||||||
|
}
|
||||||
|
|
||||||
|
await main()
|
|
@ -28,12 +28,14 @@
|
||||||
"@dexaai/dexter": "^2.0.3",
|
"@dexaai/dexter": "^2.0.3",
|
||||||
"@genkit-ai/ai": "^0.5.2",
|
"@genkit-ai/ai": "^0.5.2",
|
||||||
"@genkit-ai/core": "^0.5.2",
|
"@genkit-ai/core": "^0.5.2",
|
||||||
|
"@instructor-ai/instructor": "^1.3.0",
|
||||||
"@langchain/core": "^0.2.5",
|
"@langchain/core": "^0.2.5",
|
||||||
"@langchain/openai": "^0.1.1",
|
"@langchain/openai": "^0.1.1",
|
||||||
"ai": "^3.1.22",
|
"ai": "^3.1.22",
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
"genkitx-openai": "^0.9.0",
|
"genkitx-openai": "^0.9.0",
|
||||||
"langchain": "^0.2.4",
|
"langchain": "^0.2.4",
|
||||||
|
"openai": "^4.47.3",
|
||||||
"zod": "^3.23.3"
|
"zod": "^3.23.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,11 +72,12 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@dexaai/dexter": "^2.0.3",
|
"@dexaai/dexter": "^2.0.3",
|
||||||
"@fisch0920/eslint-config": "^1.3.1",
|
"@fisch0920/eslint-config": "^1.3.3",
|
||||||
"@genkit-ai/ai": "^0.5.2",
|
"@genkit-ai/ai": "^0.5.2",
|
||||||
|
"@instructor-ai/instructor": "^1.3.0",
|
||||||
"@langchain/core": "^0.2.5",
|
"@langchain/core": "^0.2.5",
|
||||||
"@total-typescript/ts-reset": "^0.5.1",
|
"@total-typescript/ts-reset": "^0.5.1",
|
||||||
"@types/node": "^20.12.7",
|
"@types/node": "^20.13.0",
|
||||||
"ai": "^3.1.22",
|
"ai": "^3.1.22",
|
||||||
"del-cli": "^5.1.0",
|
"del-cli": "^5.1.0",
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
|
|
|
@ -46,11 +46,14 @@ importers:
|
||||||
specifier: ^2.0.3
|
specifier: ^2.0.3
|
||||||
version: 2.1.0
|
version: 2.1.0
|
||||||
'@fisch0920/eslint-config':
|
'@fisch0920/eslint-config':
|
||||||
specifier: ^1.3.1
|
specifier: ^1.3.3
|
||||||
version: 1.3.2(eslint@8.57.0)(typescript@5.4.5)
|
version: 1.3.3(eslint@8.57.0)(typescript@5.4.5)
|
||||||
'@genkit-ai/ai':
|
'@genkit-ai/ai':
|
||||||
specifier: ^0.5.2
|
specifier: ^0.5.2
|
||||||
version: 0.5.2
|
version: 0.5.2
|
||||||
|
'@instructor-ai/instructor':
|
||||||
|
specifier: ^1.3.0
|
||||||
|
version: 1.3.0(openai@4.47.3)(zod@3.23.8)
|
||||||
'@langchain/core':
|
'@langchain/core':
|
||||||
specifier: ^0.2.5
|
specifier: ^0.2.5
|
||||||
version: 0.2.5(langchain@0.2.4(openai@4.47.3))(openai@4.47.3)
|
version: 0.2.5(langchain@0.2.4(openai@4.47.3))(openai@4.47.3)
|
||||||
|
@ -58,7 +61,7 @@ importers:
|
||||||
specifier: ^0.5.1
|
specifier: ^0.5.1
|
||||||
version: 0.5.1
|
version: 0.5.1
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: ^20.12.7
|
specifier: ^20.13.0
|
||||||
version: 20.13.0
|
version: 20.13.0
|
||||||
ai:
|
ai:
|
||||||
specifier: ^3.1.22
|
specifier: ^3.1.22
|
||||||
|
@ -126,6 +129,9 @@ importers:
|
||||||
'@genkit-ai/core':
|
'@genkit-ai/core':
|
||||||
specifier: ^0.5.2
|
specifier: ^0.5.2
|
||||||
version: 0.5.2
|
version: 0.5.2
|
||||||
|
'@instructor-ai/instructor':
|
||||||
|
specifier: ^1.3.0
|
||||||
|
version: 1.3.0(openai@4.47.3)(zod@3.23.8)
|
||||||
'@langchain/core':
|
'@langchain/core':
|
||||||
specifier: ^0.2.5
|
specifier: ^0.2.5
|
||||||
version: 0.2.5(langchain@0.2.4(axios@1.7.2)(ignore@5.3.1)(openai@4.47.3))(openai@4.47.3)
|
version: 0.2.5(langchain@0.2.4(axios@1.7.2)(ignore@5.3.1)(openai@4.47.3))(openai@4.47.3)
|
||||||
|
@ -144,6 +150,9 @@ importers:
|
||||||
langchain:
|
langchain:
|
||||||
specifier: ^0.2.4
|
specifier: ^0.2.4
|
||||||
version: 0.2.4(axios@1.7.2)(ignore@5.3.1)(openai@4.47.3)
|
version: 0.2.4(axios@1.7.2)(ignore@5.3.1)(openai@4.47.3)
|
||||||
|
openai:
|
||||||
|
specifier: ^4.47.3
|
||||||
|
version: 4.47.3
|
||||||
zod:
|
zod:
|
||||||
specifier: ^3.23.3
|
specifier: ^3.23.3
|
||||||
version: 3.23.8
|
version: 3.23.8
|
||||||
|
@ -369,8 +378,8 @@ packages:
|
||||||
'@fastify/deepmerge@1.3.0':
|
'@fastify/deepmerge@1.3.0':
|
||||||
resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==}
|
resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==}
|
||||||
|
|
||||||
'@fisch0920/eslint-config@1.3.2':
|
'@fisch0920/eslint-config@1.3.3':
|
||||||
resolution: {integrity: sha512-CUpMxCPWzoxvWFlmvH0OthooRlenqrezrVVleKEZv+NbibwgT4phyZadBLYsF8aB7Et2OoEzk4LKg8Xsdu5spA==}
|
resolution: {integrity: sha512-BhjKXkVVSmdj1M60rAbJMaM1yFUFMlOeaWNmxOL4SNgLF2TR+LFNlcUkVH7bb2A5sq4BEc+2POBCCDXwKOlbUg==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: ^5.0.0
|
typescript: ^5.0.0
|
||||||
|
@ -405,6 +414,12 @@ packages:
|
||||||
resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==}
|
resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
|
'@instructor-ai/instructor@1.3.0':
|
||||||
|
resolution: {integrity: sha512-nzadwGSkiVLcK3NAVeinPUrA6KwV5mkyWDGTXLMR8eXKbzlUwmLwQ+PTabPn2hCR+LtQ+7MvtuoR2acSTXgy6Q==}
|
||||||
|
peerDependencies:
|
||||||
|
openai: '>=4.28.0'
|
||||||
|
zod: '>=3.22.4'
|
||||||
|
|
||||||
'@isaacs/cliui@8.0.2':
|
'@isaacs/cliui@8.0.2':
|
||||||
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
|
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1265,8 +1280,8 @@ packages:
|
||||||
resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==}
|
resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==}
|
||||||
engines: {node: '>=14.16'}
|
engines: {node: '>=14.16'}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001625:
|
caniuse-lite@1.0.30001626:
|
||||||
resolution: {integrity: sha512-4KE9N2gcRH+HQhpeiRZXd+1niLB/XNLAhSy4z7fI8EzcbcPoAqjNInxVHTiTwWfTIV4w096XG8OtCOCQQKPv3w==}
|
resolution: {integrity: sha512-JRW7kAH8PFJzoPCJhLSHgDgKg5348hsQ68aqb+slnzuB5QFERv846oA/mRChmlLAOdEDeOkRn3ynb1gSFnjt3w==}
|
||||||
|
|
||||||
chai@5.1.1:
|
chai@5.1.1:
|
||||||
resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==}
|
resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==}
|
||||||
|
@ -3508,6 +3523,9 @@ packages:
|
||||||
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
|
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
|
ramda@0.29.1:
|
||||||
|
resolution: {integrity: sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==}
|
||||||
|
|
||||||
range-parser@1.2.1:
|
range-parser@1.2.1:
|
||||||
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
|
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
|
||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
|
@ -3719,6 +3737,11 @@ packages:
|
||||||
safer-buffer@2.1.2:
|
safer-buffer@2.1.2:
|
||||||
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
||||||
|
|
||||||
|
schema-stream@3.1.0:
|
||||||
|
resolution: {integrity: sha512-R4PoSFJnMORRGJ5i5BTHRO2Ed3Lf2h8DMofHd5XBU4ZE0lEBCTGRqOXBurjTEO2QntPSYAhv93jLt8PFMqDEPw==}
|
||||||
|
peerDependencies:
|
||||||
|
zod: 3.22.4
|
||||||
|
|
||||||
scoped-regex@3.0.0:
|
scoped-regex@3.0.0:
|
||||||
resolution: {integrity: sha512-yEsN6TuxZhZ1Tl9iB81frTNS292m0I/IG7+w8lTvfcJQP2x3vnpOoevjBoE3Np5A6KnZM2+RtVenihj9t6NiYg==}
|
resolution: {integrity: sha512-yEsN6TuxZhZ1Tl9iB81frTNS292m0I/IG7+w8lTvfcJQP2x3vnpOoevjBoE3Np5A6KnZM2+RtVenihj9t6NiYg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -4458,6 +4481,12 @@ packages:
|
||||||
resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
|
resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
|
||||||
engines: {node: '>=12.20'}
|
engines: {node: '>=12.20'}
|
||||||
|
|
||||||
|
zod-stream@1.0.3:
|
||||||
|
resolution: {integrity: sha512-HxK/PZ0faOMgI1Pgjhcwin22StvlwiaYo6R7jWCT3jOFcPa4wGyFLVpeC5TwmpT6YlZhNJfDoB0qJoa+rQLYmQ==}
|
||||||
|
peerDependencies:
|
||||||
|
openai: '>=4.24.1'
|
||||||
|
zod: '>=3.22.4'
|
||||||
|
|
||||||
zod-to-json-schema@3.22.5:
|
zod-to-json-schema@3.22.5:
|
||||||
resolution: {integrity: sha512-+akaPo6a0zpVCCseDed504KBJUQpEW5QZw7RMneNmKw+fGaML1Z9tUNLnHHAC8x6dzVRO1eB2oEMyZRnuBZg7Q==}
|
resolution: {integrity: sha512-+akaPo6a0zpVCCseDed504KBJUQpEW5QZw7RMneNmKw+fGaML1Z9tUNLnHHAC8x6dzVRO1eB2oEMyZRnuBZg7Q==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -4468,6 +4497,12 @@ packages:
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
zod: ^3.23.3
|
zod: ^3.23.3
|
||||||
|
|
||||||
|
zod-validation-error@2.1.0:
|
||||||
|
resolution: {integrity: sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
zod: ^3.18.0
|
||||||
|
|
||||||
zod-validation-error@3.3.0:
|
zod-validation-error@3.3.0:
|
||||||
resolution: {integrity: sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw==}
|
resolution: {integrity: sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw==}
|
||||||
engines: {node: '>=18.0.0'}
|
engines: {node: '>=18.0.0'}
|
||||||
|
@ -4650,7 +4685,7 @@ snapshots:
|
||||||
|
|
||||||
'@fastify/deepmerge@1.3.0': {}
|
'@fastify/deepmerge@1.3.0': {}
|
||||||
|
|
||||||
'@fisch0920/eslint-config@1.3.2(eslint@8.57.0)(typescript@5.4.5)':
|
'@fisch0920/eslint-config@1.3.3(eslint@8.57.0)(typescript@5.4.5)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rushstack/eslint-patch': 1.10.3
|
'@rushstack/eslint-patch': 1.10.3
|
||||||
'@typescript-eslint/eslint-plugin': 7.11.0(@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)
|
'@typescript-eslint/eslint-plugin': 7.11.0(@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)
|
||||||
|
@ -4731,6 +4766,13 @@ snapshots:
|
||||||
|
|
||||||
'@inquirer/figures@1.0.3': {}
|
'@inquirer/figures@1.0.3': {}
|
||||||
|
|
||||||
|
'@instructor-ai/instructor@1.3.0(openai@4.47.3)(zod@3.23.8)':
|
||||||
|
dependencies:
|
||||||
|
openai: 4.47.3
|
||||||
|
zod: 3.23.8
|
||||||
|
zod-stream: 1.0.3(openai@4.47.3)(zod@3.23.8)
|
||||||
|
zod-validation-error: 2.1.0(zod@3.23.8)
|
||||||
|
|
||||||
'@isaacs/cliui@8.0.2':
|
'@isaacs/cliui@8.0.2':
|
||||||
dependencies:
|
dependencies:
|
||||||
string-width: 5.1.2
|
string-width: 5.1.2
|
||||||
|
@ -5666,7 +5708,7 @@ snapshots:
|
||||||
|
|
||||||
browserslist@4.23.0:
|
browserslist@4.23.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite: 1.0.30001625
|
caniuse-lite: 1.0.30001626
|
||||||
electron-to-chromium: 1.4.788
|
electron-to-chromium: 1.4.788
|
||||||
node-releases: 2.0.14
|
node-releases: 2.0.14
|
||||||
update-browserslist-db: 1.0.16(browserslist@4.23.0)
|
update-browserslist-db: 1.0.16(browserslist@4.23.0)
|
||||||
|
@ -5724,7 +5766,7 @@ snapshots:
|
||||||
|
|
||||||
camelcase@7.0.1: {}
|
camelcase@7.0.1: {}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001625: {}
|
caniuse-lite@1.0.30001626: {}
|
||||||
|
|
||||||
chai@5.1.1:
|
chai@5.1.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -8041,6 +8083,8 @@ snapshots:
|
||||||
|
|
||||||
quick-lru@5.1.1: {}
|
quick-lru@5.1.1: {}
|
||||||
|
|
||||||
|
ramda@0.29.1: {}
|
||||||
|
|
||||||
range-parser@1.2.1: {}
|
range-parser@1.2.1: {}
|
||||||
|
|
||||||
raw-body@2.5.2:
|
raw-body@2.5.2:
|
||||||
|
@ -8291,6 +8335,11 @@ snapshots:
|
||||||
|
|
||||||
safer-buffer@2.1.2: {}
|
safer-buffer@2.1.2: {}
|
||||||
|
|
||||||
|
schema-stream@3.1.0(zod@3.23.8):
|
||||||
|
dependencies:
|
||||||
|
ramda: 0.29.1
|
||||||
|
zod: 3.23.8
|
||||||
|
|
||||||
scoped-regex@3.0.0: {}
|
scoped-regex@3.0.0: {}
|
||||||
|
|
||||||
secure-json-parse@2.7.0: {}
|
secure-json-parse@2.7.0: {}
|
||||||
|
@ -9070,6 +9119,13 @@ snapshots:
|
||||||
|
|
||||||
yocto-queue@1.0.0: {}
|
yocto-queue@1.0.0: {}
|
||||||
|
|
||||||
|
zod-stream@1.0.3(openai@4.47.3)(zod@3.23.8):
|
||||||
|
dependencies:
|
||||||
|
openai: 4.47.3
|
||||||
|
schema-stream: 3.1.0(zod@3.23.8)
|
||||||
|
zod: 3.23.8
|
||||||
|
zod-to-json-schema: 3.23.0(zod@3.23.8)
|
||||||
|
|
||||||
zod-to-json-schema@3.22.5(zod@3.23.8):
|
zod-to-json-schema@3.22.5(zod@3.23.8):
|
||||||
dependencies:
|
dependencies:
|
||||||
zod: 3.23.8
|
zod: 3.23.8
|
||||||
|
@ -9078,6 +9134,10 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
zod: 3.23.8
|
zod: 3.23.8
|
||||||
|
|
||||||
|
zod-validation-error@2.1.0(zod@3.23.8):
|
||||||
|
dependencies:
|
||||||
|
zod: 3.23.8
|
||||||
|
|
||||||
zod-validation-error@3.3.0(zod@3.23.8):
|
zod-validation-error@3.3.0(zod@3.23.8):
|
||||||
dependencies:
|
dependencies:
|
||||||
zod: 3.23.8
|
zod: 3.23.8
|
||||||
|
|
12
readme.md
12
readme.md
|
@ -13,7 +13,7 @@
|
||||||
<a href="https://twitter.com/transitive_bs"><img alt="Discuss on Twitter" src="https://img.shields.io/badge/twitter-discussion-blue" /></a>
|
<a href="https://twitter.com/transitive_bs"><img alt="Discuss on Twitter" src="https://img.shields.io/badge/twitter-discussion-blue" /></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
# Walter <!-- omit from toc -->
|
# Agentic <!-- omit from toc -->
|
||||||
|
|
||||||
**Coming soon**
|
**Coming soon**
|
||||||
|
|
||||||
|
@ -44,15 +44,11 @@
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
|
|
||||||
- core
|
- rename this repo to agentic
|
||||||
- company schema
|
- change license to MIT
|
||||||
- person schema
|
|
||||||
- database
|
|
||||||
- move out to a separate project
|
|
||||||
- agentic
|
|
||||||
- walter
|
|
||||||
- sdks
|
- sdks
|
||||||
- instructor-js
|
- instructor-js
|
||||||
|
- TODO
|
||||||
- services
|
- services
|
||||||
- wolfram alpha
|
- wolfram alpha
|
||||||
- midjourney
|
- midjourney
|
||||||
|
|
|
@ -58,6 +58,17 @@ export class AIFunctionSet implements Iterable<types.AIFunction> {
|
||||||
return [...this.entries].map(fn)
|
return [...this.entries].map(fn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get specs(): types.AIFunctionSpec[] {
|
||||||
|
return this.map((fn) => fn.spec)
|
||||||
|
}
|
||||||
|
|
||||||
|
get toolSpecs(): types.AIToolSpec[] {
|
||||||
|
return this.map((fn) => ({
|
||||||
|
type: 'function' as const,
|
||||||
|
function: fn.spec
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
get entries(): IterableIterator<types.AIFunction> {
|
get entries(): IterableIterator<types.AIFunction> {
|
||||||
return this._map.values()
|
return this._map.values()
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,6 +62,14 @@ export class AIToolSet implements Iterable<types.AITool> {
|
||||||
return [...this.entries].map(fn)
|
return [...this.entries].map(fn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get functionSpecs(): types.AIFunctionSpec[] {
|
||||||
|
return this.map((fn) => fn.function.spec)
|
||||||
|
}
|
||||||
|
|
||||||
|
get specs(): types.AIToolSpec[] {
|
||||||
|
return this.map((fn) => fn.spec)
|
||||||
|
}
|
||||||
|
|
||||||
get entries(): IterableIterator<types.AITool> {
|
get entries(): IterableIterator<types.AITool> {
|
||||||
return this._map.values()
|
return this._map.values()
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,9 @@ export type AIFunctionImpl<Return> = Omit<
|
||||||
export interface AIFunction<
|
export interface AIFunction<
|
||||||
InputSchema extends z.ZodObject<any> = z.ZodObject<any>,
|
InputSchema extends z.ZodObject<any> = z.ZodObject<any>,
|
||||||
Return = any
|
Return = any
|
||||||
> extends AIFunctionImpl<Return> {
|
> {
|
||||||
|
(input: string | Msg): MaybePromise<Return>
|
||||||
|
|
||||||
/** The Zod schema for the arguments string. */
|
/** The Zod schema for the arguments string. */
|
||||||
inputSchema: InputSchema
|
inputSchema: InputSchema
|
||||||
|
|
||||||
|
|
|
@ -25,5 +25,8 @@
|
||||||
"outDir": "dist",
|
"outDir": "dist",
|
||||||
"sourceMap": true
|
"sourceMap": true
|
||||||
},
|
},
|
||||||
"include": ["src"]
|
"include": ["src"],
|
||||||
|
"ts-node": {
|
||||||
|
"transpileOnly": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue