@promptbook/cli 0.112.0-104 โ 0.112.0-106
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/apps/agents-server/src/app/admin/image-generator-test/ImageAttachmentsEditor.tsx +19 -3
- package/apps/agents-server/src/app/admin/limits/LimitsClient.tsx +11 -12
- package/apps/agents-server/src/app/admin/metadata/MetadataClient.tsx +34 -2
- package/apps/agents-server/src/app/admin/servers/CreateServerDialog.tsx +6 -1
- package/apps/agents-server/src/app/admin/servers/useCreateServerWizard.ts +13 -1
- package/apps/agents-server/src/app/agents/[agentName]/AgentChatWrapper.tsx +11 -2
- package/apps/agents-server/src/app/agents/[agentName]/AgentProfileChat.tsx +11 -1
- package/apps/agents-server/src/app/agents/[agentName]/book/BookEditorWrapper.tsx +7 -1
- package/apps/agents-server/src/app/agents/[agentName]/chat/CanonicalAgentChatSurface.tsx +11 -1
- package/apps/agents-server/src/app/agents/[agentName]/images/default-avatar.png/route.ts +6 -2
- package/apps/agents-server/src/app/api/images/[filename]/route.ts +6 -2
- package/apps/agents-server/src/app/api/internal/agent-runner-limits/route.ts +51 -0
- package/apps/agents-server/src/app/api/upload/route.ts +48 -12
- package/apps/agents-server/src/app/layout.tsx +13 -0
- package/apps/agents-server/src/components/FileUploadAvailability/FileUploadAvailabilityContext.tsx +50 -0
- package/apps/agents-server/src/components/FileUploadAvailability/FileUploadUnavailableNotice.tsx +45 -0
- package/apps/agents-server/src/components/LayoutWrapper/LayoutWrapper.tsx +85 -76
- package/apps/agents-server/src/components/NewAgentDialog/NewAgentDialog.tsx +7 -3
- package/apps/agents-server/src/components/NewAgentDialog/NewAgentWizardKnowledgeStep.tsx +6 -0
- package/apps/agents-server/src/components/NewAgentDialog/useNewAgentWizardKnowledgeState.ts +8 -1
- package/apps/agents-server/src/constants/serverLimits.ts +22 -2
- package/apps/agents-server/src/database/seedDefaultAgents.ts +218 -0
- package/apps/agents-server/src/tools/$provideCdnForServer.ts +72 -8
- package/apps/agents-server/src/utils/defaultAgents/loadDefaultAgentBooks.ts +103 -0
- package/apps/agents-server/src/utils/knowledge/createInlineKnowledgeSourceUploader.ts +24 -5
- package/apps/agents-server/src/utils/serverLimits.ts +26 -1
- package/apps/agents-server/src/utils/serverManagement/createManagedServer/seedServerDefaultAgents.ts +1 -85
- package/apps/agents-server/src/utils/shareTargetPayloads.ts +20 -2
- package/apps/agents-server/src/utils/upload/fileUploadAvailability.ts +91 -0
- package/apps/agents-server/src/utils/upload/uploadFileToServer.ts +46 -2
- package/esm/apps/agents-server/src/constants/federatedAgentImport.d.ts +42 -0
- package/esm/apps/agents-server/src/constants/serverLimits.d.ts +207 -0
- package/esm/apps/agents-server/src/constants/toolUsageLimits.d.ts +55 -0
- package/esm/index.es.js +602 -39
- package/esm/index.es.js.map +1 -1
- package/esm/scripts/run-agent-messages/main/AgentMessageFailureTracker.d.ts +27 -0
- package/esm/scripts/run-agent-messages/main/handleAgentWatchError.d.ts +4 -0
- package/esm/scripts/run-agent-messages/main/runAgentMessages.d.ts +1 -0
- package/esm/scripts/run-agent-messages/messages/moveAgentMessageToFailed.d.ts +17 -0
- package/esm/src/book-components/BookEditor/BookEditor.d.ts +5 -4
- package/esm/src/book-components/BookEditor/BookEditorTheme.d.ts +24 -0
- package/esm/src/book-components/BookEditor/useBookEditorMonacoLanguage.d.ts +1 -6
- package/esm/src/book-components/BookEditor/useBookEditorMonacoLifecycle.d.ts +1 -4
- package/esm/src/book-components/BookEditor/useBookEditorMonacoStyles.d.ts +2 -1
- package/esm/src/cli/cli-commands/agent-folder/agentProjectPaths.d.ts +6 -0
- package/esm/src/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/avatars/visuals/octopus3d3AvatarVisual.ts +28 -29
- package/src/book-components/BookEditor/BookEditor.tsx +10 -7
- package/src/book-components/BookEditor/BookEditorMonaco.tsx +3 -1
- package/src/book-components/BookEditor/BookEditorTheme.ts +32 -0
- package/src/book-components/BookEditor/useBookEditorMonacoLanguage.ts +15 -15
- package/src/book-components/BookEditor/useBookEditorMonacoLifecycle.ts +1 -5
- package/src/book-components/BookEditor/useBookEditorMonacoStyles.ts +2 -1
- package/src/cli/cli-commands/agent-folder/agentProjectPaths.ts +7 -0
- package/src/cli/cli-commands/agents-server/buildAgentsServer.ts +109 -9
- package/src/cli/cli-commands/agents-server/startAgentsServer.ts +132 -4
- package/src/other/templates/getTemplatesPipelineCollection.ts +874 -760
- package/src/version.ts +2 -2
- package/src/versions.txt +2 -0
- package/umd/apps/agents-server/src/constants/federatedAgentImport.d.ts +42 -0
- package/umd/apps/agents-server/src/constants/serverLimits.d.ts +207 -0
- package/umd/apps/agents-server/src/constants/toolUsageLimits.d.ts +55 -0
- package/umd/index.umd.js +602 -39
- package/umd/index.umd.js.map +1 -1
- package/umd/scripts/run-agent-messages/main/AgentMessageFailureTracker.d.ts +27 -0
- package/umd/scripts/run-agent-messages/main/handleAgentWatchError.d.ts +4 -0
- package/umd/scripts/run-agent-messages/main/runAgentMessages.d.ts +1 -0
- package/umd/scripts/run-agent-messages/messages/moveAgentMessageToFailed.d.ts +17 -0
- package/umd/src/book-components/BookEditor/BookEditor.d.ts +5 -4
- package/umd/src/book-components/BookEditor/BookEditorTheme.d.ts +24 -0
- package/umd/src/book-components/BookEditor/useBookEditorMonacoLanguage.d.ts +1 -6
- package/umd/src/book-components/BookEditor/useBookEditorMonacoLifecycle.d.ts +1 -4
- package/umd/src/book-components/BookEditor/useBookEditorMonacoStyles.d.ts +2 -1
- package/umd/src/cli/cli-commands/agent-folder/agentProjectPaths.d.ts +6 -0
- package/umd/src/version.d.ts +1 -1
- package/apps/agents-server/src/message-providers/email/_common/utils/parseEmailAddress.test.ts.todo +0 -108
- package/apps/agents-server/src/message-providers/email/_common/utils/parseEmailAddresses.test.ts.todo +0 -117
- package/apps/agents-server/src/message-providers/email/_common/utils/stringifyEmailAddress.test.ts.todo +0 -119
- package/apps/agents-server/src/message-providers/email/_common/utils/stringifyEmailAddresses.test.ts.todo +0 -74
- package/apps/agents-server/src/utils/defaultAgents/defaultAgents.ts +0 -168
- package/apps/agents-server/src/utils/defaultAgents/installDefaultAgents.ts +0 -139
- package/apps/agents-server/tests/e2e/authentication-and-navigation.spec.ts.todo +0 -178
- package/src/_packages/browser.index.ts +0 -31
- package/src/_packages/browser.readme.md +0 -43
- package/src/book-2.0/agent-source/parseAgentSourceWithCommitments.test.ts.todo +0 -265
- package/src/book-components/BookEditor/BookEditorMonaco.test.tsx.todo +0 -115
- package/src/book-components/Chat/utils/renderMarkdown.test.ts.tmp +0 -199
- package/src/collection/agent-collection/constructors/agent-collection-in-directory/AgentCollectionInDirectory.test.ts.todo +0 -131
- package/src/commands/_common/parseCommand.test.ts.todo +0 -48
- package/src/commitments/META_LINK/META_LINK.test.ts.todo +0 -75
- package/src/conversion/validation/pipelineStringToJson-errors.test.ts.todo +0 -33
- package/src/dialogs/simple-prompt/SimplePromptInterfaceTools.ts +0 -51
- package/src/executables/browsers/locateSafari.test.ts.tmp +0 -15
- package/src/execution/PromptbookFetch.test-type.ts +0 -14
- package/src/execution/createPipelineExecutor/00-createPipelineExecutor.test.ts.todo +0 -0
- package/src/execution/execution-report/executionReportJsonToString.test.ts.todo +0 -83
- package/src/execution/utils/usageToHuman.test.ts.todo +0 -80
- package/src/llm-providers/_common/register/$provideLlmToolsForTestingAndScriptsAndPlayground.ts +0 -76
- package/src/llm-providers/_common/utils/assertUniqueModels.ts +0 -27
- package/src/llm-providers/_multiple/playground/playground.ts +0 -141
- package/src/llm-providers/_multiple/playground/tsconfig.json +0 -19
- package/src/llm-providers/agent/playground/playground.ts +0 -190
- package/src/llm-providers/agent/playground/tsconfig.json +0 -19
- package/src/llm-providers/anthropic-claude/playground/playground.ts +0 -99
- package/src/llm-providers/anthropic-claude/playground/tsconfig.json +0 -19
- package/src/llm-providers/azure-openai/playground/playground.ts +0 -101
- package/src/llm-providers/azure-openai/playground/tsconfig.json +0 -19
- package/src/llm-providers/ollama/playground/playground.ts +0 -120
- package/src/llm-providers/ollama/playground/tsconfig.json +0 -19
- package/src/llm-providers/openai/playground/playground.ts +0 -406
- package/src/llm-providers/openai/playground/tsconfig.json +0 -19
- package/src/llm-providers/remote/playground/playground.ts +0 -144
- package/src/llm-providers/remote/playground/tsconfig.json +0 -19
- package/src/llm-providers/vercel/playground/playground.ts +0 -133
- package/src/llm-providers/vercel/playground/tsconfig.json +0 -19
- package/src/personas/preparePersona.test.ts.todo +0 -126
- package/src/playground/backup/_playground-boilerplate.ts.txt +0 -37
- package/src/playground/backup/playground-agent-os.txt +0 -62
- package/src/playground/backup/playground-brj-app.ts.txt +0 -302
- package/src/playground/backup/playground-browser-playwright.txt +0 -110
- package/src/playground/backup/playground-claude-mcp.txt +0 -43
- package/src/playground/backup/playground-document-conversion.txt +0 -84
- package/src/playground/backup/playground-glob.ts.txt +0 -42
- package/src/playground/backup/playground-mcp-server.txt +0 -1
- package/src/playground/backup/playground-openai-agent-kit.txt +0 -73
- package/src/playground/backup/playground-openai-function-calling.txt +0 -131
- package/src/playground/backup/playground-openai-streaming.ts.txt +0 -68
- package/src/playground/backup/playground-scrape-knowledge.txt +0 -65
- package/src/playground/backup/playground-scraperFetch.ts.txt +0 -44
- package/src/playground/backup/playground-using-openai-compatible-route-on-agents-server.ts.txt +0 -49
- package/src/playground/backup/playground-write-pavolhejny-bio.txt +0 -120
- package/src/playground/permanent/_boilerplate.ts +0 -54
- package/src/playground/permanent/agent-with-browser-playground.ts +0 -92
- package/src/playground/permanent/error-handling-playground.ts +0 -103
- package/src/playground/playground.ts +0 -36
- package/src/playground/tsconfig.json +0 -19
- package/src/scrapers/_boilerplate/BoilerplateScraper.test.ts.todo +0 -73
- package/src/scrapers/_boilerplate/playground/boilerplate-scraper-playground.ts +0 -79
- package/src/scrapers/_boilerplate/playground/tsconfig.json +0 -19
- package/src/scrapers/_common/utils/files/blobToDataurl.test.ts.todo +0 -17
- package/src/scrapers/_common/utils/files/dataurlToBlob.test.ts.todo +0 -52
- package/src/scrapers/_common/utils/files/isValidDataurl.test.ts.todo +0 -42
- package/src/scrapers/_common/utils/files/shorten.test.ts.todo +0 -13
- package/src/scrapers/document/playground/document-scraper-playground.ts +0 -80
- package/src/scrapers/document/playground/tsconfig.json +0 -19
- package/src/scrapers/document-legacy/playground/legacy-document-scraper-playground.ts +0 -80
- package/src/scrapers/document-legacy/playground/tsconfig.json +0 -19
- package/src/scrapers/markdown/playground/markdown-scraper-playground.ts +0 -74
- package/src/scrapers/markdown/playground/tsconfig.json +0 -19
- package/src/scrapers/markitdown/MarkitdownScraper.test.ts.todo +0 -132
- package/src/scrapers/markitdown/playground/markitdown-scraper-playground.ts +0 -91
- package/src/scrapers/markitdown/playground/tsconfig.json +0 -19
- package/src/scrapers/pdf/PdfScraper.test.ts.todo +0 -52
- package/src/scrapers/pdf/playground/pdf-scraper-playground.ts +0 -75
- package/src/scrapers/pdf/playground/tsconfig.json +0 -19
- package/src/scrapers/website/playground/tsconfig.json +0 -19
- package/src/scrapers/website/playground/website-scraper-playground.ts +0 -82
- package/src/storage/_common/PromptbookStorage.test-type.ts +0 -14
- package/src/storage/local-storage/getIndexedDbStorage.ts +0 -36
- package/src/storage/local-storage/getLocalStorage.ts +0 -33
- package/src/storage/local-storage/getSessionStorage.ts +0 -33
- package/src/storage/local-storage/utils/IndexedDbStorageOptions.ts +0 -16
- package/src/storage/local-storage/utils/makePromptbookStorageFromIndexedDb.ts +0 -58
- package/src/storage/local-storage/utils/makePromptbookStorageFromWebStorage.ts +0 -45
- package/src/transpilers/formatted-book-in-markdown/FormattedBookInMarkdownTranspiler.test.ts.todo +0 -35
- package/src/transpilers/openai-sdk/playground/playground.ts +0 -85
- package/src/transpilers/openai-sdk/playground/tmp/chatbot-openaisdk-1.js +0 -194
- package/src/transpilers/openai-sdk/playground/tmp/package.json +0 -3
- package/src/transpilers/openai-sdk/playground/tsconfig.json +0 -18
- package/src/utils/editable/utils/findUsableParameters.test.ts.todo +0 -43
- package/src/utils/editable/utils/stringifyPipelineJson.test.ts.todo +0 -38
- package/src/utils/markdown/prettifyMarkdown.test.ts.tmp +0 -42
- package/src/utils/serialization/serializeToPromptbookJavascript.test.ts.todo +0 -116
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ts-node
|
|
2
|
-
|
|
3
|
-
import * as dotenv from 'dotenv';
|
|
4
|
-
|
|
5
|
-
dotenv.config({ path: '.env' });
|
|
6
|
-
|
|
7
|
-
import colors from 'colors'; // <- TODO: [๐ถ] Make system to put color and style to both node and browser
|
|
8
|
-
import { embeddingVectorToString } from '../../../execution/embeddingVectorToString';
|
|
9
|
-
import { usageToHuman } from '../../../execution/utils/usageToHuman';
|
|
10
|
-
import type { Prompt } from '../../../types/Prompt';
|
|
11
|
-
import { keepUnused } from '../../../utils/organization/keepUnused';
|
|
12
|
-
// import { OllamaAssistantExecutionTools } from '../OllamaAssistantExecutionTools';
|
|
13
|
-
import type { Usage } from '../../../execution/Usage';
|
|
14
|
-
import { countUsage } from '../../_common/utils/count-total-usage/countUsage';
|
|
15
|
-
import { createOllamaExecutionTools } from '../createOllamaExecutionTools';
|
|
16
|
-
|
|
17
|
-
playground()
|
|
18
|
-
.catch((error) => {
|
|
19
|
-
console.error(colors.bgRed(error.name || 'NamelessError'));
|
|
20
|
-
console.error(error);
|
|
21
|
-
process.exit(1);
|
|
22
|
-
})
|
|
23
|
-
.then(() => {
|
|
24
|
-
process.exit(0);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Handles playground.
|
|
29
|
-
*/
|
|
30
|
-
async function playground() {
|
|
31
|
-
console.info(`๐งธ Ollama Playground`);
|
|
32
|
-
|
|
33
|
-
// Do here stuff you want to test
|
|
34
|
-
//========================================>
|
|
35
|
-
|
|
36
|
-
const ollamaExecutionTools = createOllamaExecutionTools({
|
|
37
|
-
isVerbose: true,
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
const ollamaExecutionToolsWithUsage = countUsage(ollamaExecutionTools);
|
|
41
|
-
|
|
42
|
-
ollamaExecutionToolsWithUsage.spending().subscribe((usage: Usage) => {
|
|
43
|
-
const wordCount = (usage?.input?.wordsCount?.value || 0) + (usage?.output?.wordsCount?.value || 0);
|
|
44
|
-
console.log(`[๐ธ] Spending ${wordCount} words`);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
keepUnused(ollamaExecutionTools);
|
|
48
|
-
keepUnused(embeddingVectorToString);
|
|
49
|
-
keepUnused(usageToHuman);
|
|
50
|
-
keepUnused<Prompt>();
|
|
51
|
-
|
|
52
|
-
/*/
|
|
53
|
-
const models = await ollamaExecutionTools.listModels();
|
|
54
|
-
console.info({ models });
|
|
55
|
-
/**/
|
|
56
|
-
|
|
57
|
-
/*/
|
|
58
|
-
const completionPrompt = {
|
|
59
|
-
title: 'Hello',
|
|
60
|
-
parameters: {},
|
|
61
|
-
content: `Hello, my name is Alice.`,
|
|
62
|
-
modelRequirements: {
|
|
63
|
-
modelVariant: 'COMPLETION',
|
|
64
|
-
},
|
|
65
|
-
} as const satisfies Prompt;
|
|
66
|
-
const completionPromptResult = await ollamaExecutionTools.callCompletionModel(completionPrompt);
|
|
67
|
-
console.info({ completionPromptResult });
|
|
68
|
-
console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
|
|
69
|
-
console.info(colors.green(completionPrompt.content + completionPromptResult.content));
|
|
70
|
-
/**/
|
|
71
|
-
|
|
72
|
-
/**/
|
|
73
|
-
const chatPrompt = {
|
|
74
|
-
title: 'Promptbook speech',
|
|
75
|
-
parameters: {},
|
|
76
|
-
content: `Hello`,
|
|
77
|
-
modelRequirements: {
|
|
78
|
-
modelVariant: 'CHAT',
|
|
79
|
-
// modelName: 'mistral',
|
|
80
|
-
systemMessage: 'You are an assistant who only speaks in rhymes.',
|
|
81
|
-
temperature: 1.5,
|
|
82
|
-
},
|
|
83
|
-
} as const satisfies Prompt;
|
|
84
|
-
const chatPromptResult = await ollamaExecutionToolsWithUsage.callChatModel!(chatPrompt);
|
|
85
|
-
console.info({ chatPromptResult });
|
|
86
|
-
console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
|
|
87
|
-
console.info(colors.bgBlue(' User: ') + colors.blue(chatPrompt.content));
|
|
88
|
-
console.info(colors.bgGreen(' Chat: ') + colors.green(chatPromptResult.content));
|
|
89
|
-
/**/
|
|
90
|
-
|
|
91
|
-
/*/
|
|
92
|
-
// TODO: Test Translations in playground
|
|
93
|
-
/**/
|
|
94
|
-
|
|
95
|
-
/*/
|
|
96
|
-
const prompt = {
|
|
97
|
-
title: 'Hello',
|
|
98
|
-
parameters: {},
|
|
99
|
-
content: `Hello, my name is Alice.`,
|
|
100
|
-
modelRequirements: {
|
|
101
|
-
modelVariant: 'EMBEDDING',
|
|
102
|
-
// modelName: 'text-embedding-ada-002',
|
|
103
|
-
},
|
|
104
|
-
} as const satisfies Prompt;
|
|
105
|
-
const promptResult = await ollamaExecutionTools.callEmbeddingModel(prompt);
|
|
106
|
-
console.info({ promptResult });
|
|
107
|
-
console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
|
|
108
|
-
console.info(colors.bgBlue(' User: ') + colors.blue(prompt.content));
|
|
109
|
-
console.info(colors.bgGreen(' Embedding: ') + colors.green(embeddingVectorToString(promptResult.content)));
|
|
110
|
-
/**/
|
|
111
|
-
|
|
112
|
-
/*/
|
|
113
|
-
// <- Note: [๐ค] Test here new model variant if needed
|
|
114
|
-
/**/
|
|
115
|
-
|
|
116
|
-
//========================================/
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
// Note: [โซ] Code for playground [ollama playground](src/llm-providers/ollama/playground/playground.ts) should never be published in any package
|
|
120
|
-
// TODO: [main] !!3 Test here that `systemMessage`, `temperature` and `seed` are working correctly
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "esnext",
|
|
4
|
-
"module": "commonjs",
|
|
5
|
-
"downlevelIteration": true,
|
|
6
|
-
"allowJs": true,
|
|
7
|
-
"moduleResolution": "node",
|
|
8
|
-
"forceConsistentCasingInFileNames": true,
|
|
9
|
-
"noImplicitReturns": true,
|
|
10
|
-
"noImplicitThis": true,
|
|
11
|
-
"noImplicitAny": true,
|
|
12
|
-
"strictNullChecks": true,
|
|
13
|
-
"experimentalDecorators": true,
|
|
14
|
-
"noUnusedLocals": false,
|
|
15
|
-
"resolveJsonModule": true,
|
|
16
|
-
"esModuleInterop": true
|
|
17
|
-
},
|
|
18
|
-
"exclude": ["node_modules"]
|
|
19
|
-
}
|
|
@@ -1,406 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ts-node
|
|
2
|
-
|
|
3
|
-
import * as dotenv from 'dotenv';
|
|
4
|
-
|
|
5
|
-
dotenv.config({ path: '.env' });
|
|
6
|
-
|
|
7
|
-
import colors from 'colors'; // <- TODO: [๐ถ] Make system to put color and style to both node and browser
|
|
8
|
-
import { embeddingVectorToString } from '../../../execution/embeddingVectorToString';
|
|
9
|
-
import { usageToHuman } from '../../../execution/utils/usageToHuman';
|
|
10
|
-
import { JavascriptEvalExecutionTools } from '../../../scripting/javascript/JavascriptEvalExecutionTools';
|
|
11
|
-
import type { ChatPrompt, Prompt } from '../../../types/Prompt';
|
|
12
|
-
import { keepUnused } from '../../../utils/organization/keepUnused';
|
|
13
|
-
// import { OpenAiAssistantExecutionTools } from '../OpenAiAssistantExecutionTools';
|
|
14
|
-
import { join } from 'path';
|
|
15
|
-
import { DEFAULT_EXECUTION_CACHE_DIRNAME } from '../../../config';
|
|
16
|
-
import type { Usage } from '../../../execution/Usage';
|
|
17
|
-
import { $provideFilesystemForNode } from '../../../scrapers/_common/register/$provideFilesystemForNode';
|
|
18
|
-
import { FileCacheStorage } from '../../../storage/file-cache-storage/FileCacheStorage';
|
|
19
|
-
import { cacheLlmTools } from '../../_common/utils/cache/cacheLlmTools';
|
|
20
|
-
import { countUsage } from '../../_common/utils/count-total-usage/countUsage';
|
|
21
|
-
import { OpenAiAgentKitExecutionTools } from '../OpenAiAgentKitExecutionTools';
|
|
22
|
-
import { OpenAiExecutionTools } from '../OpenAiExecutionTools';
|
|
23
|
-
|
|
24
|
-
playground()
|
|
25
|
-
.catch((error) => {
|
|
26
|
-
console.error(colors.bgRed(error.name || 'NamelessError'));
|
|
27
|
-
console.error(error);
|
|
28
|
-
process.exit(1);
|
|
29
|
-
})
|
|
30
|
-
.then(() => {
|
|
31
|
-
process.exit(0);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Handles playground.
|
|
36
|
-
*/
|
|
37
|
-
async function playground() {
|
|
38
|
-
console.info(`๐งธ OpenAI Playground`);
|
|
39
|
-
|
|
40
|
-
// Do here stuff you want to test
|
|
41
|
-
//========================================>
|
|
42
|
-
|
|
43
|
-
const script = new JavascriptEvalExecutionTools({
|
|
44
|
-
functions: {
|
|
45
|
-
// TODO: !!!! Normalize function names:
|
|
46
|
-
get_coupon_code: async (params: { productCategory: string; discountPercentage: number }) => {
|
|
47
|
-
// Simulate generating a coupon code based on product category and discount percentage
|
|
48
|
-
const { productCategory, discountPercentage } = params;
|
|
49
|
-
const code = `SAVE${discountPercentage}${productCategory.toUpperCase().slice(0, 3)}2025`;
|
|
50
|
-
|
|
51
|
-
console.log(
|
|
52
|
-
`!!!! [๐ ๏ธ] Generated coupon code: ${code} for category: ${productCategory} with discount: ${discountPercentage}%`,
|
|
53
|
-
);
|
|
54
|
-
|
|
55
|
-
return code;
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
let openAiExecutionTools = new OpenAiExecutionTools(
|
|
61
|
-
// <- TODO: [๐งฑ] Implement in a functional (not new Class) way
|
|
62
|
-
{
|
|
63
|
-
isVerbose: true,
|
|
64
|
-
userId: 'playground',
|
|
65
|
-
apiKey: process.env.OPENAI_API_KEY!,
|
|
66
|
-
executionTools: { script },
|
|
67
|
-
},
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
openAiExecutionTools = cacheLlmTools(openAiExecutionTools, {
|
|
71
|
-
storage: new FileCacheStorage(
|
|
72
|
-
{ fs: $provideFilesystemForNode() },
|
|
73
|
-
{
|
|
74
|
-
rootFolderPath: join(
|
|
75
|
-
process.cwd(),
|
|
76
|
-
DEFAULT_EXECUTION_CACHE_DIRNAME,
|
|
77
|
-
// <- TODO: [๐ฆ] Allow to override (pass different value into the function)
|
|
78
|
-
),
|
|
79
|
-
},
|
|
80
|
-
),
|
|
81
|
-
// isCacheReloaded: isCacheReloaded,
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
const openAiExecutionToolsWithUsage = countUsage(openAiExecutionTools);
|
|
85
|
-
|
|
86
|
-
openAiExecutionToolsWithUsage.spending().subscribe((usage: Usage) => {
|
|
87
|
-
const wordCount = (usage?.input?.wordsCount?.value || 0) + (usage?.output?.wordsCount?.value || 0);
|
|
88
|
-
console.log(`[๐ธ] Spending ${wordCount} words`);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
/*/
|
|
92
|
-
const openAiAssistantExecutionTools = new OpenAiAssistantExecutionTools(
|
|
93
|
-
// <- TODO: [๐งฑ] Implement in a functional (not new Class) way
|
|
94
|
-
{
|
|
95
|
-
isVerbose: true,
|
|
96
|
-
userId: 'playground',
|
|
97
|
-
apiKey: process.env.OPENAI_API_KEY!,
|
|
98
|
-
assistantId: 'asst_CJCZzFCbBL0f2D4OWMXVTdBB',
|
|
99
|
-
// <- Note: This is not a private information, just ID of the assistant which is accessible only with correct API key
|
|
100
|
-
},
|
|
101
|
-
);
|
|
102
|
-
/**/
|
|
103
|
-
|
|
104
|
-
/*/
|
|
105
|
-
const openAiAgentKitExecutionTools = new OpenAiAgentKitExecutionTools({
|
|
106
|
-
isVerbose: true,
|
|
107
|
-
userId: 'playground',
|
|
108
|
-
apiKey: process.env.OPENAI_API_KEY!,
|
|
109
|
-
executionTools: { script },
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
const agentKitPrompt = {
|
|
113
|
-
title: 'AgentKit Coupon Demo',
|
|
114
|
-
parameters: {},
|
|
115
|
-
content: `Generate a coupon code for electronics with 15% off using the tool.`,
|
|
116
|
-
tools: [
|
|
117
|
-
{
|
|
118
|
-
name: 'get_coupon_code',
|
|
119
|
-
description: 'Generate a coupon code based on product category and discount percentage',
|
|
120
|
-
parameters: {
|
|
121
|
-
type: 'object',
|
|
122
|
-
properties: {
|
|
123
|
-
productCategory: {
|
|
124
|
-
type: 'string',
|
|
125
|
-
description: 'The category of the product (e.g., electronics, clothing)',
|
|
126
|
-
},
|
|
127
|
-
discountPercentage: {
|
|
128
|
-
type: 'number',
|
|
129
|
-
description: 'The discount percentage to apply',
|
|
130
|
-
},
|
|
131
|
-
},
|
|
132
|
-
required: ['productCategory', 'discountPercentage'],
|
|
133
|
-
},
|
|
134
|
-
},
|
|
135
|
-
],
|
|
136
|
-
modelRequirements: {
|
|
137
|
-
modelVariant: 'CHAT',
|
|
138
|
-
systemMessage:
|
|
139
|
-
'Use the get_coupon_code tool to generate the coupon. Do not invent coupon codes.',
|
|
140
|
-
},
|
|
141
|
-
} satisfies ChatPrompt;
|
|
142
|
-
const agentKitResult = await openAiAgentKitExecutionTools.callChatModel!(agentKitPrompt);
|
|
143
|
-
console.info({ agentKitResult });
|
|
144
|
-
console.info(colors.cyan(usageToHuman(agentKitResult.usage)));
|
|
145
|
-
console.info(colors.bgBlue(' User: ') + colors.blue(agentKitPrompt.content));
|
|
146
|
-
console.info(colors.bgGreen(' AgentKit: ') + colors.green(agentKitResult.content));
|
|
147
|
-
/**/
|
|
148
|
-
|
|
149
|
-
keepUnused(openAiExecutionTools);
|
|
150
|
-
keepUnused(OpenAiAgentKitExecutionTools);
|
|
151
|
-
// keepUnused(openAiAssistantExecutionTools);
|
|
152
|
-
keepUnused(embeddingVectorToString);
|
|
153
|
-
keepUnused(usageToHuman);
|
|
154
|
-
keepUnused<Prompt>();
|
|
155
|
-
|
|
156
|
-
/*/
|
|
157
|
-
const models = await openAiExecutionTools.listModels();
|
|
158
|
-
console.info({ models });
|
|
159
|
-
/**/
|
|
160
|
-
|
|
161
|
-
/*/
|
|
162
|
-
const imagePrompt = {
|
|
163
|
-
title: 'Hello',
|
|
164
|
-
parameters: {},
|
|
165
|
-
content: `Coffee cup floating in space, surrealistic, vibrant colors, high detail`,
|
|
166
|
-
modelRequirements: {
|
|
167
|
-
modelVariant: 'IMAGE_GENERATION',
|
|
168
|
-
},
|
|
169
|
-
} as const satisfies Prompt;
|
|
170
|
-
const imagePromptResult = await openAiExecutionTools.callImageGenerationModel(imagePrompt);
|
|
171
|
-
console.info({ imagePromptResult });
|
|
172
|
-
console.info(colors.cyan(usageToHuman(imagePromptResult.usage)));
|
|
173
|
-
console.info(colors.green(imagePromptResult.content));
|
|
174
|
-
/**/
|
|
175
|
-
|
|
176
|
-
/*/
|
|
177
|
-
const completionPrompt = {
|
|
178
|
-
title: 'Hello',
|
|
179
|
-
parameters: {},
|
|
180
|
-
content: `Hello, my name is Alice.`,
|
|
181
|
-
modelRequirements: {
|
|
182
|
-
modelVariant: 'COMPLETION',
|
|
183
|
-
},
|
|
184
|
-
} as const satisfies Prompt;
|
|
185
|
-
const completionPromptResult = await openAiExecutionTools.callCompletionModel(completionPrompt);
|
|
186
|
-
console.info({ completionPromptResult });
|
|
187
|
-
console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
|
|
188
|
-
console.info(colors.green(completionPrompt.content + completionPromptResult.content));
|
|
189
|
-
/**/
|
|
190
|
-
|
|
191
|
-
/**/
|
|
192
|
-
const chatPrompt = {
|
|
193
|
-
title: 'Prague',
|
|
194
|
-
parameters: {},
|
|
195
|
-
// thread: [
|
|
196
|
-
// // <- TODO: !!! Maybe rename to `previousMessages`
|
|
197
|
-
// {
|
|
198
|
-
// sender: 'user', // <- [๐ฅ] TODO: Standardize to `role: 'USER' | 'ASSISTANT'
|
|
199
|
-
// content: 'Where is Prague ',
|
|
200
|
-
// },
|
|
201
|
-
// {
|
|
202
|
-
// sender: 'assistant',
|
|
203
|
-
// content: 'Prague is a beautiful city located in the Czech Republic.',
|
|
204
|
-
// },
|
|
205
|
-
// ],
|
|
206
|
-
content: `Give me a coupons for grocery shopping in electronics store with a 20% discount.`,
|
|
207
|
-
|
|
208
|
-
tools: [
|
|
209
|
-
{
|
|
210
|
-
name: 'get_coupon_code',
|
|
211
|
-
|
|
212
|
-
description: 'Generate a coupon code based on product category and discount percentage',
|
|
213
|
-
|
|
214
|
-
parameters: {
|
|
215
|
-
type: 'object',
|
|
216
|
-
properties: {
|
|
217
|
-
productCategory: {
|
|
218
|
-
type: 'string',
|
|
219
|
-
description: 'The category of the product (e.g., electronics, clothing)',
|
|
220
|
-
},
|
|
221
|
-
discountPercentage: {
|
|
222
|
-
type: 'number',
|
|
223
|
-
description: 'The discount percentage to apply',
|
|
224
|
-
},
|
|
225
|
-
},
|
|
226
|
-
required: ['productCategory', 'discountPercentage'],
|
|
227
|
-
},
|
|
228
|
-
},
|
|
229
|
-
],
|
|
230
|
-
|
|
231
|
-
modelRequirements: {
|
|
232
|
-
modelVariant: 'CHAT',
|
|
233
|
-
systemMessage:
|
|
234
|
-
'You are an helpful assistant who can provide coupon codes, via the get_coupon_code tool. Do not make up coupon codes on your own. Do not provide more that 25% discount and more than 5 coupons per message.',
|
|
235
|
-
// modelName: 'gpt-3.5-turbo',
|
|
236
|
-
modelName: 'gpt-5',
|
|
237
|
-
temperature: 1.5,
|
|
238
|
-
},
|
|
239
|
-
} /* as const */ satisfies ChatPrompt; /* <- Note: [๐ค] */
|
|
240
|
-
const chatPromptResult = await openAiExecutionToolsWithUsage.callChatModel!(chatPrompt);
|
|
241
|
-
console.info({ chatPromptResult });
|
|
242
|
-
console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
|
|
243
|
-
console.info(colors.bgBlue(' User: ') + colors.blue(chatPrompt.content));
|
|
244
|
-
console.info(colors.bgGreen(' Chat: ') + colors.green(chatPromptResult.content));
|
|
245
|
-
/**/
|
|
246
|
-
|
|
247
|
-
/**/
|
|
248
|
-
// TODO: !!!!! Test
|
|
249
|
-
const chatPromptWithFiles = {
|
|
250
|
-
title: 'Chat with files',
|
|
251
|
-
parameters: {},
|
|
252
|
-
content: `What is in these images?`,
|
|
253
|
-
|
|
254
|
-
files: [
|
|
255
|
-
// Note: In node.js we need to mock the File object or use a real one if available
|
|
256
|
-
// For playground purposes, we can use a small transparent pixel
|
|
257
|
-
new File(
|
|
258
|
-
// cspell:disable
|
|
259
|
-
[Buffer.from('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7', 'base64')],
|
|
260
|
-
// cspell:enable
|
|
261
|
-
'pixel.gif',
|
|
262
|
-
{ type: 'image/gif' },
|
|
263
|
-
),
|
|
264
|
-
],
|
|
265
|
-
modelRequirements: {
|
|
266
|
-
modelVariant: 'CHAT',
|
|
267
|
-
modelName: 'gpt-4o',
|
|
268
|
-
},
|
|
269
|
-
} satisfies ChatPrompt;
|
|
270
|
-
const chatPromptWithFilesResult = await openAiExecutionToolsWithUsage.callChatModel!(chatPromptWithFiles);
|
|
271
|
-
console.info({ chatPromptWithFilesResult });
|
|
272
|
-
console.info(colors.bgBlue(' User: ') + colors.blue(chatPromptWithFiles.content));
|
|
273
|
-
console.info(colors.bgGreen(' Chat: ') + colors.green(chatPromptWithFilesResult.content));
|
|
274
|
-
/**/
|
|
275
|
-
|
|
276
|
-
/*/
|
|
277
|
-
const chatPromptResult2 = await openAiExecutionToolsWithUsage.callChatModel!(chatPrompt);
|
|
278
|
-
console.info({ chatPromptResult2 });
|
|
279
|
-
console.info(colors.cyan(usageToHuman(chatPromptResult2.usage)));
|
|
280
|
-
console.info(colors.bgBlue(' User: ') + colors.blue(chatPrompt.content));
|
|
281
|
-
console.info(colors.bgGreen(' Chat: ') + colors.green(chatPromptResult2.content));
|
|
282
|
-
/**/
|
|
283
|
-
|
|
284
|
-
/*/
|
|
285
|
-
// TODO: Test Translations in playground
|
|
286
|
-
/**/
|
|
287
|
-
|
|
288
|
-
/*/
|
|
289
|
-
const prompt = {
|
|
290
|
-
title: 'Hello',
|
|
291
|
-
parameters: {},
|
|
292
|
-
content: `Hello, my name is Alice.`,
|
|
293
|
-
modelRequirements: {
|
|
294
|
-
modelVariant: 'EMBEDDING',
|
|
295
|
-
// modelName: 'text-embedding-ada-002',
|
|
296
|
-
},
|
|
297
|
-
} as const satisfies Prompt;
|
|
298
|
-
const promptResult = await openAiExecutionTools.callEmbeddingModel(prompt);
|
|
299
|
-
console.info({ promptResult });
|
|
300
|
-
console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
|
|
301
|
-
console.info(colors.bgBlue(' User: ') + colors.blue(prompt.content));
|
|
302
|
-
console.info(colors.bgGreen(' Embedding: ') + colors.green(embeddingVectorToString(promptResult.content)));
|
|
303
|
-
/**/
|
|
304
|
-
|
|
305
|
-
/*/
|
|
306
|
-
const chatPrompt = {
|
|
307
|
-
title: 'Promptbook speech',
|
|
308
|
-
parameters: {},
|
|
309
|
-
content: `Write me speech about Promptbook and how it can help me to build the most beautiful chatbot and change the world`,
|
|
310
|
-
modelRequirements: {
|
|
311
|
-
modelVariant: 'CHAT',
|
|
312
|
-
// TODO: [๐จโ๐จโ๐งโ๐ง] systemMessage: 'You are an assistant who only speaks in rhymes.',
|
|
313
|
-
// TODO: [๐จโ๐จโ๐งโ๐ง] temperature: 1.5,
|
|
314
|
-
},
|
|
315
|
-
|
|
316
|
-
/*
|
|
317
|
-
[๐ฏ]
|
|
318
|
-
replyingTo: {
|
|
319
|
-
|
|
320
|
-
}
|
|
321
|
-
* /
|
|
322
|
-
} as const satisfies Prompt;
|
|
323
|
-
const chatPromptResult = await openAiAssistantExecutionTools.callChatModel(chatPrompt);
|
|
324
|
-
console.info({ chatPromptResult });
|
|
325
|
-
console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
|
|
326
|
-
console.info(colors.bgBlue(' User: ') + colors.blue(chatPrompt.content));
|
|
327
|
-
console.info(colors.bgGreen(' Assistant: ') + colors.green(chatPromptResult.content));
|
|
328
|
-
/**/
|
|
329
|
-
|
|
330
|
-
/*/
|
|
331
|
-
const openai = await openAiExecutionTools.getClient();
|
|
332
|
-
const stream = openai.beta.threads.createAndRunStream({
|
|
333
|
-
stream: true,
|
|
334
|
-
assistant_id: 'asst_CJCZzFCbBL0f2D4OWMXVTdBB',
|
|
335
|
-
// <- Note: This is not a private information, just ID of the assistant which is accessible only with correct API key
|
|
336
|
-
thread: {
|
|
337
|
-
messages: [{ role: 'user', content: 'What is the meaning of life? I want breathtaking speech.' }],
|
|
338
|
-
},
|
|
339
|
-
});
|
|
340
|
-
|
|
341
|
-
console.log(stream);
|
|
342
|
-
|
|
343
|
-
stream.on('connect', () => {
|
|
344
|
-
console.log('connect', stream.currentEvent);
|
|
345
|
-
});
|
|
346
|
-
|
|
347
|
-
stream.on('messageDelta', (messageDelta) => {
|
|
348
|
-
console.log('messageDelta', (messageDelta as any).content[0].text);
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
stream.on('messageCreated', (message) => {
|
|
352
|
-
console.log('messageCreated', message);
|
|
353
|
-
});
|
|
354
|
-
|
|
355
|
-
stream.on('messageDone', (message) => {
|
|
356
|
-
console.log('messageDone', message);
|
|
357
|
-
});
|
|
358
|
-
|
|
359
|
-
const finalMessages = await stream.finalMessages();
|
|
360
|
-
console.log('finalMessages', finalMessages, finalMessages[0]!.content[0]!);
|
|
361
|
-
|
|
362
|
-
/**/
|
|
363
|
-
|
|
364
|
-
/*/
|
|
365
|
-
const chatWithToolsPrompt = {
|
|
366
|
-
title: 'Chat with tools',
|
|
367
|
-
parameters: {},
|
|
368
|
-
content: `What is the current weather in Prague?`,
|
|
369
|
-
modelRequirements: {
|
|
370
|
-
modelVariant: 'CHAT',
|
|
371
|
-
modelName: 'gpt-4o',
|
|
372
|
-
tools: [
|
|
373
|
-
{
|
|
374
|
-
name: 'get_current_weather',
|
|
375
|
-
description: 'Get the current weather in a given location',
|
|
376
|
-
parameters: {
|
|
377
|
-
type: 'object',
|
|
378
|
-
properties: {
|
|
379
|
-
location: {
|
|
380
|
-
type: 'string',
|
|
381
|
-
description: 'The city and state, e.g. San Francisco, CA',
|
|
382
|
-
},
|
|
383
|
-
unit: { type: 'string', enum: ['celsius', 'fahrenheit'] },
|
|
384
|
-
},
|
|
385
|
-
required: ['location'],
|
|
386
|
-
},
|
|
387
|
-
},
|
|
388
|
-
],
|
|
389
|
-
},
|
|
390
|
-
} as const satisfies Prompt;
|
|
391
|
-
const chatWithToolsResult = await openAiExecutionTools.callChatModel(chatWithToolsPrompt);
|
|
392
|
-
console.info({ chatWithToolsResult });
|
|
393
|
-
console.info(colors.cyan(usageToHuman(chatWithToolsResult.usage)));
|
|
394
|
-
console.info(colors.bgBlue(' User: ') + colors.blue(chatWithToolsPrompt.content));
|
|
395
|
-
console.info(colors.bgGreen(' Chat: ') + colors.green(chatWithToolsResult.content));
|
|
396
|
-
/**/
|
|
397
|
-
|
|
398
|
-
/*/
|
|
399
|
-
// <- Note: [๐ค] Test here new model variant if needed
|
|
400
|
-
/**/
|
|
401
|
-
|
|
402
|
-
//========================================/
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
// Note: [โซ] Code for playground [openai playground](src/llm-providers/openai/playground/playground.ts) should never be published in any package
|
|
406
|
-
// TODO: [main] !!3 Test here that `systemMessage`, `temperature` and `seed` are working correctly
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "esnext",
|
|
4
|
-
"module": "commonjs",
|
|
5
|
-
"downlevelIteration": true,
|
|
6
|
-
"allowJs": true,
|
|
7
|
-
"moduleResolution": "node",
|
|
8
|
-
"forceConsistentCasingInFileNames": true,
|
|
9
|
-
"noImplicitReturns": true,
|
|
10
|
-
"noImplicitThis": true,
|
|
11
|
-
"noImplicitAny": true,
|
|
12
|
-
"strictNullChecks": true,
|
|
13
|
-
"experimentalDecorators": true,
|
|
14
|
-
"noUnusedLocals": false,
|
|
15
|
-
"resolveJsonModule": true,
|
|
16
|
-
"esModuleInterop": true
|
|
17
|
-
},
|
|
18
|
-
"exclude": ["node_modules"]
|
|
19
|
-
}
|