mirror of
https://github.com/enricoros/big-AGI.git
synced 2026-05-11 14:10:15 -07:00
LLMS/AIX: OpenAI Image Generation Tool
This commit is contained in:
@@ -158,6 +158,14 @@ export const DModelParameterRegistry = {
|
||||
initialValue: false,
|
||||
} as const,
|
||||
|
||||
llmVndOaiImageGeneration: {
|
||||
label: 'Image Generation',
|
||||
type: 'boolean' as const,
|
||||
description: 'Enable image generation capabilities',
|
||||
// No initialValue - defaults to undefined/false (off)
|
||||
// No requiredFallback - this is optional
|
||||
} as const,
|
||||
|
||||
// Perplexity-specific parameters
|
||||
|
||||
// llmVndPerplexityReasoningEffort - we reuse the OpenAI reasoning effort parameter
|
||||
|
||||
@@ -50,7 +50,7 @@ export function aixCreateModelFromLLMOptions(
|
||||
llmRef, llmTemperature, llmResponseTokens, llmTopP, llmForceNoStream,
|
||||
llmVndAntThinkingBudget,
|
||||
llmVndGeminiShowThoughts, llmVndGeminiThinkingBudget,
|
||||
llmVndOaiReasoningEffort, llmVndOaiReasoningEffort4, llmVndOaiRestoreMarkdown, llmVndOaiVerbosity, llmVndOaiWebSearchContext, llmVndOaiWebSearchGeolocation,
|
||||
llmVndOaiReasoningEffort, llmVndOaiReasoningEffort4, llmVndOaiRestoreMarkdown, llmVndOaiVerbosity, llmVndOaiWebSearchContext, llmVndOaiWebSearchGeolocation, llmVndOaiImageGeneration,
|
||||
llmVndPerplexityDateFilter, llmVndPerplexitySearchMode,
|
||||
llmVndXaiSearchMode, llmVndXaiSearchSources, llmVndXaiSearchDateFilter,
|
||||
} = {
|
||||
@@ -108,6 +108,7 @@ export function aixCreateModelFromLLMOptions(
|
||||
...(llmVndOaiRestoreMarkdown ? { vndOaiRestoreMarkdown: llmVndOaiRestoreMarkdown } : {}),
|
||||
...(llmVndOaiVerbosity ? { vndOaiVerbosity: llmVndOaiVerbosity } : {}),
|
||||
...(llmVndOaiWebSearchContext ? { vndOaiWebSearchContext: llmVndOaiWebSearchContext } : {}),
|
||||
...(llmVndOaiImageGeneration ? { vndOaiImageGeneration: true } : {}),
|
||||
...(llmVndPerplexityDateFilter ? { vndPerplexityDateFilter: llmVndPerplexityDateFilter } : {}),
|
||||
...(llmVndPerplexitySearchMode ? { vndPerplexitySearchMode: llmVndPerplexitySearchMode } : {}),
|
||||
...(userGeolocation ? { userGeolocation } : {}),
|
||||
|
||||
@@ -413,6 +413,7 @@ export namespace AixWire_API {
|
||||
vndOaiRestoreMarkdown: z.boolean().optional(),
|
||||
vndOaiVerbosity: z.enum(['low', 'medium', 'high']).optional(),
|
||||
vndOaiWebSearchContext: z.enum(['low', 'medium', 'high']).optional(),
|
||||
vndOaiImageGeneration: z.boolean().optional(),
|
||||
vndPerplexityDateFilter: z.enum(['unfiltered', '1m', '3m', '6m', '1y']).optional(),
|
||||
vndPerplexitySearchMode: z.enum(['default', 'academic']).optional(),
|
||||
vndXaiSearchMode: z.enum(['auto', 'on', 'off']).optional(),
|
||||
|
||||
@@ -146,8 +146,8 @@ export function aixToOpenAIResponses(openAIDialect: OpenAIDialects, model: AixAP
|
||||
}
|
||||
}
|
||||
|
||||
// Tool: Image Generation: for testing (enable for all compatible models)
|
||||
const requestImageGenerationTool = false // TODO: make this configurable
|
||||
// Tool: Image Generation: configurable per model
|
||||
const requestImageGenerationTool = !!model.vndOaiImageGeneration;
|
||||
if (requestImageGenerationTool) {
|
||||
if (isDialectAzure) {
|
||||
// Azure OpenAI may not support image generation tool yet
|
||||
|
||||
@@ -109,6 +109,7 @@ export function LLMParametersEditor(props: {
|
||||
llmVndOaiRestoreMarkdown,
|
||||
llmVndOaiWebSearchContext,
|
||||
llmVndOaiWebSearchGeolocation,
|
||||
llmVndOaiImageGeneration,
|
||||
llmVndOaiVerbosity,
|
||||
llmVndPerplexityDateFilter,
|
||||
llmVndPerplexitySearchMode,
|
||||
@@ -391,6 +392,19 @@ export function LLMParametersEditor(props: {
|
||||
/>
|
||||
)}
|
||||
|
||||
{showParam('llmVndOaiImageGeneration') && (
|
||||
<FormSwitchControl
|
||||
title='Image Generation'
|
||||
description='Enable image generation'
|
||||
tooltip='Allow the model to generate images when appropriate'
|
||||
checked={!!llmVndOaiImageGeneration}
|
||||
onChange={checked => {
|
||||
if (!checked) onRemoveParameter('llmVndOaiImageGeneration');
|
||||
else onChangeParameter({ llmVndOaiImageGeneration: true });
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
|
||||
{showParam('llmForceNoStream') && (
|
||||
<FormSwitchControl
|
||||
title='Disable Streaming'
|
||||
|
||||
@@ -86,6 +86,7 @@ const ModelParameterSpec_schema = z.object({
|
||||
'llmVndOaiVerbosity',
|
||||
'llmVndOaiWebSearchContext',
|
||||
'llmVndOaiWebSearchGeolocation',
|
||||
'llmVndOaiImageGeneration',
|
||||
'llmVndPerplexityDateFilter',
|
||||
'llmVndPerplexitySearchMode',
|
||||
'llmVndXaiSearchMode',
|
||||
|
||||
@@ -33,6 +33,7 @@ export const _knownOpenAIChatModels: ManualMappings = [
|
||||
{ paramId: 'llmVndOaiReasoningEffort4' }, { paramId: 'llmVndOaiWebSearchContext' },
|
||||
{ paramId: 'llmVndOaiRestoreMarkdown' }, // activate markdown restoration (true as initial value)
|
||||
{ paramId: 'llmVndOaiVerbosity' }, // gpt-5-class nets have verbosity control
|
||||
{ paramId: 'llmVndOaiImageGeneration' }, // image generation capability
|
||||
],
|
||||
chatPrice: { input: 1.25, cache: { cType: 'oai-ac', read: 0.125 }, output: 10 },
|
||||
benchmark: { cbaElo: 1481 },
|
||||
@@ -48,7 +49,7 @@ export const _knownOpenAIChatModels: ManualMappings = [
|
||||
maxCompletionTokens: 128000,
|
||||
trainingDataCutoff: 'Sep 30, 2024',
|
||||
interfaces: [LLM_IF_OAI_Chat, LLM_IF_OAI_Vision, LLM_IF_OAI_Fn, LLM_IF_OAI_Json, LLM_IF_OAI_Reasoning, LLM_IF_OAI_Responses, LLM_IF_OAI_PromptCaching, LLM_IF_Tools_WebSearch, LLM_IF_HOTFIX_NoTemperature],
|
||||
parameterSpecs: [{ paramId: 'llmVndOaiReasoningEffort4' }, { paramId: 'llmVndOaiWebSearchContext' }, { paramId: 'llmVndOaiRestoreMarkdown' }, { paramId: 'llmVndOaiVerbosity' }],
|
||||
parameterSpecs: [{ paramId: 'llmVndOaiReasoningEffort4' }, { paramId: 'llmVndOaiWebSearchContext' }, { paramId: 'llmVndOaiRestoreMarkdown' }, { paramId: 'llmVndOaiVerbosity' }, { paramId: 'llmVndOaiImageGeneration' }],
|
||||
chatPrice: { input: 1.25, cache: { cType: 'oai-ac', read: 0.125 }, output: 10 },
|
||||
benchmark: { cbaElo: 1481 },
|
||||
},
|
||||
@@ -76,7 +77,7 @@ export const _knownOpenAIChatModels: ManualMappings = [
|
||||
maxCompletionTokens: 128000,
|
||||
trainingDataCutoff: 'May 30, 2024',
|
||||
interfaces: [LLM_IF_OAI_Chat, LLM_IF_OAI_Vision, LLM_IF_OAI_Fn, LLM_IF_OAI_Json, LLM_IF_OAI_Reasoning, LLM_IF_OAI_Responses, LLM_IF_OAI_PromptCaching, LLM_IF_Tools_WebSearch, LLM_IF_HOTFIX_NoTemperature],
|
||||
parameterSpecs: [{ paramId: 'llmVndOaiReasoningEffort4' }, { paramId: 'llmVndOaiWebSearchContext' }, { paramId: 'llmVndOaiRestoreMarkdown' }, { paramId: 'llmVndOaiVerbosity' }],
|
||||
parameterSpecs: [{ paramId: 'llmVndOaiReasoningEffort4' }, { paramId: 'llmVndOaiWebSearchContext' }, { paramId: 'llmVndOaiRestoreMarkdown' }, { paramId: 'llmVndOaiVerbosity' }, { paramId: 'llmVndOaiImageGeneration' }],
|
||||
chatPrice: { input: 0.25, cache: { cType: 'oai-ac', read: 0.025 }, output: 2 },
|
||||
// benchmark: { cbaElo: TBD }, // Not yet available
|
||||
},
|
||||
@@ -91,7 +92,7 @@ export const _knownOpenAIChatModels: ManualMappings = [
|
||||
maxCompletionTokens: 128000,
|
||||
trainingDataCutoff: 'May 30, 2024',
|
||||
interfaces: [LLM_IF_OAI_Chat, LLM_IF_OAI_Vision, LLM_IF_OAI_Fn, LLM_IF_OAI_Json, LLM_IF_OAI_Reasoning, LLM_IF_OAI_Responses, LLM_IF_OAI_PromptCaching, LLM_IF_Tools_WebSearch, LLM_IF_HOTFIX_NoTemperature],
|
||||
parameterSpecs: [{ paramId: 'llmVndOaiReasoningEffort4' }, { paramId: 'llmVndOaiWebSearchContext' }, { paramId: 'llmVndOaiRestoreMarkdown' }, { paramId: 'llmVndOaiVerbosity' }],
|
||||
parameterSpecs: [{ paramId: 'llmVndOaiReasoningEffort4' }, { paramId: 'llmVndOaiWebSearchContext' }, { paramId: 'llmVndOaiRestoreMarkdown' }, { paramId: 'llmVndOaiVerbosity' }, { paramId: 'llmVndOaiImageGeneration' }],
|
||||
chatPrice: { input: 0.25, cache: { cType: 'oai-ac', read: 0.025 }, output: 2 },
|
||||
// benchmark: { cbaElo: TBD }, // Not yet available
|
||||
},
|
||||
@@ -106,7 +107,7 @@ export const _knownOpenAIChatModels: ManualMappings = [
|
||||
maxCompletionTokens: 128000,
|
||||
trainingDataCutoff: 'May 30, 2024',
|
||||
interfaces: [LLM_IF_OAI_Chat, LLM_IF_OAI_Vision, LLM_IF_OAI_Fn, LLM_IF_OAI_Json, LLM_IF_OAI_Reasoning, LLM_IF_OAI_Responses, LLM_IF_OAI_PromptCaching, LLM_IF_HOTFIX_NoTemperature],
|
||||
parameterSpecs: [{ paramId: 'llmVndOaiReasoningEffort4' }, { paramId: 'llmVndOaiVerbosity' }],
|
||||
parameterSpecs: [{ paramId: 'llmVndOaiReasoningEffort4' }, { paramId: 'llmVndOaiVerbosity' }, { paramId: 'llmVndOaiImageGeneration' }],
|
||||
chatPrice: { input: 0.05, cache: { cType: 'oai-ac', read: 0.005 }, output: 0.4 },
|
||||
// benchmark: { cbaElo: TBD }, // Not yet available
|
||||
},
|
||||
@@ -121,7 +122,7 @@ export const _knownOpenAIChatModels: ManualMappings = [
|
||||
maxCompletionTokens: 128000,
|
||||
trainingDataCutoff: 'May 30, 2024',
|
||||
interfaces: [LLM_IF_OAI_Chat, LLM_IF_OAI_Vision, LLM_IF_OAI_Fn, LLM_IF_OAI_Json, LLM_IF_OAI_Reasoning, LLM_IF_OAI_Responses, LLM_IF_OAI_PromptCaching, LLM_IF_HOTFIX_NoTemperature],
|
||||
parameterSpecs: [{ paramId: 'llmVndOaiReasoningEffort4' }, { paramId: 'llmVndOaiVerbosity' }],
|
||||
parameterSpecs: [{ paramId: 'llmVndOaiReasoningEffort4' }, { paramId: 'llmVndOaiVerbosity' }, { paramId: 'llmVndOaiImageGeneration' }],
|
||||
chatPrice: { input: 0.05, cache: { cType: 'oai-ac', read: 0.005 }, output: 0.4 },
|
||||
// benchmark: { cbaElo: TBD }, // Not yet available
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user