feat(core): add optionalModels field in AiPrompt and support the front-end modelId param (#12224)

Close [AI-116](https://linear.app/affine-design/issue/AI-116)

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Added support for specifying alternative AI models in chat prompts, enabling users to select from multiple available models.
  - Expanded AI model options with new additions: 'gpt-4.1', 'o3', and 'claude-3-5-sonnet-20241022'.

- **Enhancements**
  - Users can now optionally choose a specific AI model during chat interactions.
  - Prompts and chat sessions reflect and support selection of alternative models where applicable.

- **Bug Fixes**
  - Improved handling of prompt configuration defaults for better reliability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
akumatus
2025-05-13 09:17:34 +00:00
parent 27089e2599
commit 74452a0aab
11 changed files with 83 additions and 32 deletions
@@ -34,7 +34,10 @@ export class AnthropicProvider
{
override readonly type = CopilotProviderType.Anthropic;
override readonly capabilities = [CopilotCapability.TextToText];
override readonly models = ['claude-3-7-sonnet-20250219'];
override readonly models = [
'claude-3-7-sonnet-20250219',
'claude-3-5-sonnet-20241022',
];
private readonly MAX_STEPS = 20;
@@ -74,6 +74,7 @@ export class OpenAIProvider
'gpt-4.1-2025-04-14',
'gpt-4.1-mini',
'o1',
'o3',
'o4-mini',
// embeddings
'text-embedding-3-large',
@@ -110,12 +110,12 @@ export type CopilotImageOptions = z.infer<typeof CopilotImageOptionsSchema>;
export interface CopilotTextToTextProvider extends CopilotProvider {
generateText(
messages: PromptMessage[],
model?: string,
model: string,
options?: CopilotChatOptions
): Promise<string>;
generateTextStream(
messages: PromptMessage[],
model?: string,
model: string,
options?: CopilotChatOptions
): AsyncIterable<string>;
}
@@ -136,7 +136,7 @@ export interface CopilotTextToImageProvider extends CopilotProvider {
): Promise<Array<string>>;
generateImagesStream(
messages: PromptMessage[],
model?: string,
model: string,
options?: CopilotImageOptions
): AsyncIterable<string>;
}
@@ -145,12 +145,12 @@ export interface CopilotImageToTextProvider extends CopilotProvider {
generateText(
messages: PromptMessage[],
model: string,
options?: CopilotChatOptions
options: CopilotChatOptions
): Promise<string>;
generateTextStream(
messages: PromptMessage[],
model: string,
options?: CopilotChatOptions
options: CopilotChatOptions
): AsyncIterable<string>;
}
@@ -162,7 +162,7 @@ export interface CopilotImageToImageProvider extends CopilotProvider {
): Promise<Array<string>>;
generateImagesStream(
messages: PromptMessage[],
model?: string,
model: string,
options?: CopilotImageOptions
): AsyncIterable<string>;
}