Kind: Class
Source: atloria-monorepo/apps/api/src/ai/providers/azure-openai.provider.ts
AzureOpenAIProvider integrates Azure OpenAI models into the API's AI provider layer. It checks provider availability, generates complete or streamed text responses, returns usage metadata when needed, and performs structured analysis through the shared AI abstractions.
Implements: AIProvider
Methods
| Method | Signature | Returns |
|---|---|---|
isAvailable | isAvailable() | Promise<boolean> |
generateText | generateText(prompt: string, options: GenerateOptions) | Promise<string> |
generateTextWithUsage | generateTextWithUsage(prompt: string, options: GenerateOptions) | Promise<AIResponse> |
generateStream | generateStream(prompt: string, options: GenerateOptions) | AsyncIterableIterator<string> |
analyze | analyze(content: string, type: AnalysisType) | Promise<AnalysisResult> |
Properties
| Property | Type |
|---|---|
name | any |
Where it refuses work
AzureOpenAIProviderstops the work with an early return whendata === '[DONE]'.
When something fails
AzureOpenAIProviderhandles failure in 4 places: it lets it reach the caller in 2, logs it and continues in 1, and turns it into a return value in 1.
Diagram
mermaidgraph LR Client[API service or feature] --> Provider[AzureOpenAIProvider] Provider --> Availability[isAvailable()] Provider --> Text[generateText()] Provider --> Usage[generateTextWithUsage()] Provider --> Stream[generateStream()] Provider --> Analysis[analyze()] Provider --> Azure[Azure OpenAI endpoint] Azure --> Provider
Usage
tsimport { AzureOpenAIProvider } from './ai/providers/azure-openai.provider';
const provider = new AzureOpenAIProvider(
/* inject the Azure OpenAI configuration/dependencies used by the application */
);
if (!(await provider.isAvailable())) {
throw new Error('Azure OpenAI is not currently available');
}
const text = await provider.generateText({
prompt: 'Summarize the following support ticket in two sentences.',
input: ticketContent,
});
const response = await provider.generateTextWithUsage({
prompt: 'Create a concise customer-facing reply.',
input: ticketContent,
});
console.log(response);
for await (const chunk of provider.generateStream({
prompt: 'Draft a response one section at a time.',
input: ticketContent,
})) {
process.stdout.write(chunk);
}
AI Coding Instructions
- Use the shared AI provider request and response types when calling
generateText,generateTextWithUsage,generateStream, andanalyze. - Check
isAvailable()before routing work to Azure OpenAI, especially when the system supports provider fallback behavior. - Prefer
generateTextWithUsage()when token or cost tracking is required; usegenerateText()for simple text-only workflows. - Consume
generateStream()withfor await...ofand forward chunks incrementally rather than buffering the entire response. - Keep Azure endpoint, deployment, API version, and credentials in application configuration; do not hardcode Azure credentials in callers.
Referenced By
AIModule(MODULE_PROVIDES)AIModule(MODULE_EXPORTS)AIService(DEPENDS_ON)FeatureDocsGeneratorService(DEPENDS_ON)TutorialGeneratorService(DEPENDS_ON)UserDocsGeneratorService(DEPENDS_ON)
Was this page helpful?