# OpenAIProvider

**Kind:** Class

**Source:** [`atloria-monorepo/packages/doc-automation/src/v2/providers/openai.provider.ts`](https://github.com/sherkety/atloria/blob/main/atloria-monorepo/packages/doc-automation/src/v2/providers/openai.provider.ts#L55)

**Implements:** `AIProvider`

## Methods

| Method | Signature | Returns |
|---|---|---|
| `generate` | `generate(prompt: string, options: OpenAIGenerateOptions, stage: JobStage)` | `Promise<OpenAIResponse>` |
| `generateWithStreaming` | `generateWithStreaming(prompt: string, options: OpenAIGenerateOptions, stage: JobStage)` | `Promise<OpenAIResponse>` |
| `generateText` | `generateText(prompt: string, options: Omit<OpenAIGenerateOptions, 'messages'>, stage: JobStage)` | `Promise<string>` |
| `generateJSON` | `generateJSON(prompt: string, options: OpenAIGenerateOptions, stage: JobStage)` | `Promise<{ data: T; response: OpenAIResponse }>` |
| `verifyClaim` | `verifyClaim(claim: string, sourceCode: string, context: string)` | `Promise<{
    verified: boolean;
    confidence: number;
    reasoning: string;
    issues?: string[];
  }>` |
| `generateWithStructuredOutput` | `generateWithStructuredOutput(options: {
    prompt: string;
    schema: object;
    model?: string;
  })` | `Promise<{ content: T; usage: { inputTokens: number; outputTokens: number } }>` |
| `isAvailable` | `isAvailable()` | `Promise<boolean>` |
| `getThrottlingStatus` | `getThrottlingStatus()` | `{ consecutiveFailures: number; adaptiveDelayMs: number; lastFailureTime: number }` |

## Properties

| Property | Type |
|---|---|
| `name` | `any` |

## Where it refuses work

- `OpenAIProvider` stops the work with `Error` when `!config.apiKey && !config.azureApiKey` — “OpenAI provider requires either apiKey or azureApiKey”.
- `OpenAIProvider` stops the work with an early return when `error instanceof AIProviderError`.

## When something fails

- `OpenAIProvider` handles failure in 5 places: it lets it reach the caller in 2, logs it and continues in 1, turns it into a return value in 1, and discards it silently in 1. A failure discarded silently leaves no trace for whoever debugs this later.
