feat(openai): add getModelSetup() and typed provider options for OpenAI reasoning settings
This commit is contained in:
@@ -70,11 +70,43 @@ const options: ISmartAiOptions = {
|
||||
baseUrl: 'http://localhost:11434',
|
||||
// Ollama-only: model runtime options
|
||||
ollamaOptions: { think: true, num_ctx: 4096 },
|
||||
// OpenAI request-time options for generateText()/streamText()
|
||||
providerOptions: { openai: { reasoningEffort: 'xhigh' } },
|
||||
};
|
||||
|
||||
const model = getModel(options);
|
||||
```
|
||||
|
||||
### `getModelSetup(options): { model, providerOptions }`
|
||||
|
||||
Use this when a provider needs request-time AI SDK `providerOptions`, such as GPT-5 reasoning settings for OpenAI. `getModel()` remains available for existing consumers; `getModelSetup()` returns the same model plus provider options to pass into `generateText()` or `streamText()`.
|
||||
|
||||
```typescript
|
||||
import { getModelSetup, generateText } from '@push.rocks/smartai';
|
||||
|
||||
const setup = getModelSetup({
|
||||
provider: 'openai',
|
||||
apiKey: process.env.OPENAI_API_KEY,
|
||||
model: 'gpt-5.5',
|
||||
providerOptions: {
|
||||
openai: {
|
||||
reasoningEffort: 'xhigh',
|
||||
textVerbosity: 'high',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const result = await generateText({
|
||||
model: setup.model,
|
||||
prompt: 'Draft a careful migration plan.',
|
||||
providerOptions: setup.providerOptions,
|
||||
});
|
||||
|
||||
console.log(result.text);
|
||||
```
|
||||
|
||||
OpenAI `reasoningEffort` supports `'none'`, `'minimal'`, `'low'`, `'medium'`, `'high'`, and `'xhigh'`. Model IDs are accepted as strings, so new IDs like `'gpt-5.5'` can be used before upstream model unions are updated.
|
||||
|
||||
### Re-exported AI SDK Functions
|
||||
|
||||
SmartAI re-exports the most commonly used functions from `ai` for convenience:
|
||||
@@ -101,7 +133,7 @@ import type {
|
||||
| Provider | Package | Example Models |
|
||||
|----------|---------|----------------|
|
||||
| **Anthropic** | `@ai-sdk/anthropic` | `claude-sonnet-4-5-20250929`, `claude-opus-4-5-20250929` |
|
||||
| **OpenAI** | `@ai-sdk/openai` | `gpt-4o`, `gpt-4o-mini`, `o3-mini` |
|
||||
| **OpenAI** | `@ai-sdk/openai` | `gpt-5.5`, `gpt-5`, `gpt-4o`, `o3-mini` |
|
||||
| **Google** | `@ai-sdk/google` | `gemini-2.0-flash`, `gemini-2.5-pro` |
|
||||
| **Groq** | `@ai-sdk/groq` | `llama-3.3-70b-versatile`, `mixtral-8x7b-32768` |
|
||||
| **Mistral** | `@ai-sdk/mistral` | `mistral-large-latest`, `mistral-small-latest` |
|
||||
|
||||
Reference in New Issue
Block a user