-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathprompts.ts
More file actions
106 lines (92 loc) · 3.97 KB
/
prompts.ts
File metadata and controls
106 lines (92 loc) · 3.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/**
* Prompts API Journey — Full lifecycle of prompt template management
*
* Demonstrates all PromptClient APIs:
* - Save, get, update, delete prompts
* - Tag management for prompts
* - Test prompts against LLMs
* - List all prompts
*
* Prerequisites:
* - An LLM integration configured in Conductor (for testPrompt)
*
* Run:
* CONDUCTOR_SERVER_URL=http://localhost:8080 npx ts-node examples/api-journeys/prompts.ts
*/
import { OrkesClients } from "../../src/sdk";
async function main() {
const clients = await OrkesClients.from();
const prompts = clients.getPromptClient();
const promptName = "journey_example_prompt";
const provider = process.env.LLM_PROVIDER ?? "openai_integration";
const model = process.env.LLM_MODEL ?? "gpt-4o";
try {
// ── 1. Save a prompt template ───────────────────────────────────
await prompts.savePrompt(
promptName,
"Example prompt for API journey",
"You are a helpful assistant. The user wants to know about {{topic}}. Respond concisely.",
[`${provider}:${model}`]
);
console.log("1. Saved prompt:", promptName);
// ── 2. Get the prompt ───────────────────────────────────────────
const prompt = await prompts.getPrompt(promptName);
console.log("2. Retrieved prompt:", JSON.stringify(prompt, null, 2));
// ── 3. Update the prompt ────────────────────────────────────────
await prompts.updatePrompt(
promptName,
"Updated example prompt",
"You are a concise expert. Explain {{topic}} in {{style}} style. Keep it under 100 words.",
[`${provider}:${model}`]
);
console.log("3. Updated prompt template");
// ── 4. List all prompts ─────────────────────────────────────────
const allPrompts = await prompts.getPrompts();
console.log("4. Total prompts:", allPrompts.length);
// ── 5. Tag management ───────────────────────────────────────────
await prompts.setPromptTags(promptName, [
{ key: "category", value: "example" },
{ key: "version", value: "v2" },
]);
console.log("5. Set prompt tags");
const tags = await prompts.getPromptTags(promptName);
console.log("6. Prompt tags:", JSON.stringify(tags));
await prompts.deletePromptTags(promptName, [
{ key: "version", value: "v2" },
]);
console.log("7. Deleted prompt tag");
// ── 6. Test the prompt ──────────────────────────────────────────
console.log("\n8. Testing prompt against LLM...");
try {
const result = await prompts.testPrompt({
prompt: "You are a concise expert. Explain {{topic}} in {{style}} style. Keep it under 100 words.",
promptVariables: {
topic: "TypeScript generics",
style: "beginner-friendly",
},
llmProvider: provider,
model,
});
console.log(" Result:", result);
} catch (err) {
console.log(
" (Skipped — requires LLM integration. Error:",
(err as Error).message,
")"
);
}
// ── 7. Cleanup ──────────────────────────────────────────────────
await prompts.deletePrompt(promptName);
console.log("9. Deleted prompt");
} catch (err) {
console.error("Error:", err);
// Best-effort cleanup
try { await prompts.deletePrompt(promptName); } catch { /* ignore */ }
}
console.log("\nDone.");
process.exit(0);
}
main().catch((err) => {
console.error(err);
process.exit(1);
});