import { OpenAI } from "openai";
const endpoint = process.env.AZURE_OPENAI_ENDPOINT
const apiKey = process.env.AZURE_OPENAI_API_KEY
const baseURL = `${endpoint}/openai/v1/`
const model = 'gpt-4.1' // model deployment name
const client = new OpenAI({
baseURL,
apiKey,
maxRetries: 0, // default is 2; Configure the default for all requests
});
// == responses ===
const response1 = await client.responses.create({
model,
instructions: 'You are a helpful AI agent',
input: 'how tall is triglav?',
});
console.log(response1.output_text);
// == streaming ===
const stream = await client.responses.create({
model,
input: 'Provide a brief history of the attention is all you need paper.',
stream: true,
});
for await (const event of stream) {
if (event.type === 'response.output_text.delta' && event.delta) {
process.stdout.write(event.delta);
}
}
// == chat ==
const response2 = await client.chat.completions.create({
messages: [
{ role:"system", content: "You are a helpful assistant." },
{ role:"user", content: "I am going to Paris, what should I see?" }
],
max_completion_tokens: 13107,
temperature: 1,
top_p: 1,
frequency_penalty: 0,
presence_penalty: 0,
model,
});
if (response2?.error !== undefined && response2.status !== "200") {
throw response2.error;
}
console.log(response2.choices[0].message.content);
// == retries, configure per-request:
const response3 = await client.chat.completions.create(
{ messages: [{ role: 'user', content: 'How can I get the name of the current day in Node.js?' }], model },
{ maxRetries: 5 }
);
if (response3?.error !== undefined && response3.status !== "200") {
console.error(response3.status, response3.error);
} else {
console.log(response3.choices[0].message.content);
}
// == tools, use MCP server
const response4 = await client.responses.create({
model,
tools: [
{
type: "mcp",
server_label: "microsoft_learn",
server_description: "Microsoft Learn MCP server for searching and fetching Microsoft documentation.",
server_url: "https://learn.microsoft.com/api/mcp",
require_approval: "never",
},
],
input: "Search for information about Azure Functions",
});
console.log(response4.output_text);