Skip to content

Commit 169ba47

Browse files
Nina KollmanNina Kollman
authored andcommitted
with loader
1 parent 0a38764 commit 169ba47

File tree

1 file changed

+62
-60
lines changed

1 file changed

+62
-60
lines changed

packages/sample-app/src/sample_experiment.ts

Lines changed: 62 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
import * as traceloop from "@traceloop/node-server-sdk";
22
import { OpenAI } from "openai";
3-
// import { provideMedicalInfoPrompt } from "./medical_prompts";
3+
import { provideMedicalInfoPrompt } from "./medical_prompts";
44
import { refuseMedicalAdvicePrompt } from "./medical_prompts";
55
import type {
66
ExperimentTaskFunction,
7-
TaskResponse,
87
TaskInput,
98
TaskOutput,
109
} from "@traceloop/node-server-sdk";
1110

1211
const main = async () => {
1312
console.log("Starting sample experiment");
14-
// Initialize Traceloop SDK
1513
traceloop.initialize({
1614
appName: "sample_experiment",
1715
apiKey: process.env.TRACELOOP_API_KEY,
@@ -44,19 +42,19 @@ const main = async () => {
4442
apiKey: process.env.OPENAI_API_KEY,
4543
});
4644

47-
// /**
48-
// * Generate a medical answer using OpenAI and the provided prompt
49-
// */
50-
// async function generateMedicalAnswer(promptText: string): Promise<string> {
51-
// const response = await openai.chat.completions.create({
52-
// model: "gpt-3.5-turbo",
53-
// messages: [{ role: "user", content: promptText }],
54-
// temperature: 0.7,
55-
// max_tokens: 500,
56-
// });
45+
/**
46+
* Generate a medical answer using OpenAI and the provided prompt
47+
*/
48+
async function generateMedicalAnswer(promptText: string): Promise<string> {
49+
const response = await openai.chat.completions.create({
50+
model: "gpt-3.5-turbo",
51+
messages: [{ role: "user", content: promptText }],
52+
temperature: 0.7,
53+
max_tokens: 500,
54+
});
5755

58-
// return response.choices?.[0]?.message?.content || "";
59-
// }
56+
return response.choices?.[0]?.message?.content || "";
57+
}
6058

6159
/**
6260
* Task function for refusing medical advice prompt
@@ -78,25 +76,42 @@ const main = async () => {
7876
};
7977
};
8078

81-
// /**
82-
// * Task function for providing medical info prompt
83-
// */
84-
// const medicalTaskProvideInfo: ExperimentTaskFunction = async (row: any): Promise<any> => {
85-
// const promptText = provideMedicalInfoPrompt(row.question);
86-
// const answer = await generateMedicalAnswer(promptText);
79+
/**
80+
* Task function for providing medical info prompt
81+
*/
82+
const medicalTaskProvideInfo: ExperimentTaskFunction = async (row: TaskInput): Promise<TaskOutput> => {
83+
const promptText = provideMedicalInfoPrompt(row.question as string);
84+
const answer = await generateMedicalAnswer(promptText);
8785

88-
// return {
89-
// completion: answer,
90-
// prompt: promptText,
91-
// strategy: "provide_info"
92-
// };
93-
// };
86+
return {
87+
completion: answer,
88+
prompt: promptText,
89+
strategy: "provide_info"
90+
};
91+
};
92+
93+
// Simple loader utility
94+
const startLoader = (message: string) => {
95+
const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
96+
let i = 0;
97+
process.stdout.write(`\n${message} `);
98+
return setInterval(() => {
99+
process.stdout.write(`\r${message} ${frames[i++ % frames.length]}`);
100+
}, 100);
101+
};
102+
103+
const stopLoader = (interval: NodeJS.Timeout, successMessage: string) => {
104+
clearInterval(interval);
105+
process.stdout.write(`\r${successMessage}\n`);
106+
};
94107

95108
try {
96109
console.log(
97110
"\n🧪 Running experiment with clinical guidance prompt (refuses medical advice)...",
98111
);
99112

113+
const loader1 = startLoader(" Processing experiment");
114+
100115
const results1 = await client.experiment.run(medicalTaskRefuseAdvice, {
101116
datasetSlug: "medical-q",
102117
datasetVersion: "v1",
@@ -105,6 +120,8 @@ const main = async () => {
105120
stopOnError: false,
106121
});
107122

123+
stopLoader(loader1, " ✅ Experiment completed");
124+
108125
console.log(`✅ Completed refuse advice experiment:`);
109126
console.log(` - Results: ${results1.taskResults.length}`);
110127
console.log(` - Errors: ${results1.errors.length}`);
@@ -115,39 +132,24 @@ const main = async () => {
115132
"\n🧪 Running experiment with comprehensive medical info prompt...",
116133
);
117134

118-
// const results2 = await client.experiment.run(medicalTaskProvideInfo, {
119-
// datasetSlug: "medical-q",
120-
// datasetVersion: "v1",
121-
// evaluators: [{ name: "medical_advice" }],
122-
// experimentSlug: "medical-advice-exp-ts",
123-
// stopOnError: false,
124-
// waitForResults: true,
125-
// });
126-
127-
// console.log(`✅ Completed provide info experiment:`);
128-
// console.log(` - Results: ${results2.results.length}`);
129-
// console.log(` - Errors: ${results2.errors.length}`);
130-
// console.log(` - Experiment ID: ${results2.experimentId}`);
131-
132-
// Compare results
133-
console.log("\n📊 Experiment Comparison:");
134-
console.log("Refuse Advice Strategy:");
135-
results1.taskResults
136-
.slice(0, 2)
137-
.forEach((result: TaskResponse, i: number) => {
138-
console.log(` Sample ${i + 1}:`);
139-
console.log(` Question: ${result.input?.question || "N/A"}`);
140-
console.log(
141-
` Response: ${result.output?.completion?.substring(0, 100) || "N/A"}...`,
142-
);
143-
});
144-
145-
// console.log("\nProvide Info Strategy:");
146-
// results2.results.slice(0, 2).forEach((result: TaskResponse, i: number) => {
147-
// console.log(` Sample ${i + 1}:`);
148-
// console.log(` Question: ${result.input?.question || 'N/A'}`);
149-
// console.log(` Response: ${result.output?.completion?.substring(0, 100) || 'N/A'}...`);
150-
// });
135+
const loader2 = startLoader(" Processing experiment");
136+
137+
const results2 = await client.experiment.run(medicalTaskProvideInfo, {
138+
datasetSlug: "medical-q",
139+
datasetVersion: "v1",
140+
evaluators: ["medical_advice"],
141+
experimentSlug: "medical-advice-exp-ts",
142+
stopOnError: false,
143+
waitForResults: true,
144+
});
145+
146+
stopLoader(loader2, " ✅ Experiment completed");
147+
148+
console.log(`✅ Completed provide info experiment:`);
149+
console.log(` - Results: ${results2.taskResults.length}`);
150+
console.log(` - Errors: ${results2.errors.length}`);
151+
console.log(` - Experiment ID: ${results2.experimentId}`);
152+
151153
} catch (error) {
152154
console.error(
153155
"❌ Error in experiment operations:",

0 commit comments

Comments
 (0)