-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdemo-responses.js
More file actions
98 lines (80 loc) · 2.88 KB
/
demo-responses.js
File metadata and controls
98 lines (80 loc) · 2.88 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
// ============================================
// Azure OpenAI - Responses API Demo
// Multi-turn Conversation Example
// ============================================
// This demo shows how the Responses API manages
// conversation history on the backend using previous_response_id
//
// Prerequisites:
// 1. Node.js installed (version 18 or higher)
// 2. An Azure OpenAI resource with a model deployment
// 3. Azure CLI installed and logged in (az login)
//
// Installation:
// npm install openai @azure/identity
//
// Environment Variables (set before running):
// AZURE_OPENAI_API_BASE - Your endpoint (e.g., https://YOUR-RESOURCE.openai.azure.com/openai/v1/)
// AZURE_OPENAI_API_DEPLOY - Your model deployment name
//
// Run:
// node demo-responses.js
// ============================================
const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity");
const { OpenAI } = require("openai");
const AZURE_OPENAI_API_BASE = process.env.AZURE_OPENAI_API_BASE;
const AZURE_OPENAI_API_DEPLOY = process.env.AZURE_OPENAI_API_DEPLOY;
if (!AZURE_OPENAI_API_BASE || !AZURE_OPENAI_API_DEPLOY) {
console.error("Error: Environment variables not set properly!");
process.exit(1);
}
async function main() {
const tokenProvider = getBearerTokenProvider(
new DefaultAzureCredential(),
"https://cognitiveservices.azure.com/.default"
);
const client = new OpenAI({
baseURL: AZURE_OPENAI_API_BASE,
apiKey: tokenProvider,
});
console.log("=".repeat(60));
console.log("RESPONSES API - Multi-turn Conversation Demo");
console.log("(History managed on backend via previous_response_id)");
console.log("=".repeat(60));
// Define conversation turns
const questions = [
"What is the capital of France?",
"What is its population?",
"Name 3 famous landmarks there."
];
try {
let previousResponseId = null;
for (let i = 0; i < questions.length; i++) {
const question = questions[i];
console.log(`\n[Turn ${i + 1}] User: ${question}\n`);
const requestParams = {
model: AZURE_OPENAI_API_DEPLOY,
input: question,
};
// Add system instructions only on first turn
if (i === 0) {
requestParams.instructions = "You are a helpful assistant. Keep responses brief.";
}
// Chain to previous response if exists
if (previousResponseId) {
requestParams.previous_response_id = previousResponseId;
}
const response = await client.responses.create(requestParams);
console.log("AI Agent:", response.output_text);
console.log("─".repeat(60));
// Store response ID for next turn
previousResponseId = response.id;
}
} catch (error) {
console.error("Error:", error.message);
if (error.message.includes("DefaultAzureCredential")) {
console.log("\nError: Make sure you've logged in with az login");
}
}
}
main();