style+FIM prompt

This commit is contained in:
Andrew Pareles 2025-02-24 05:33:45 -08:00
parent 5cbd0a19a4
commit 5c047b78f3
3 changed files with 9 additions and 7 deletions

View file

@ -1020,7 +1020,7 @@ export const SidebarChat = () => {
{/* error message */}
{latestError === undefined ? null :
<div className='px-2'>
<div className='px-2 my-1'>
<ErrorDisplay
message={latestError.message}
fullError={latestError.fullError}

View file

@ -10,7 +10,7 @@ import { Ollama } from 'ollama';
import { Model as OpenAIModel } from 'openai/resources/models.js';
import { OllamaModelResponse, OnText, OnFinalMessage, OnError, LLMChatMessage, LLMFIMMessage, ModelListParams } from '../../common/llmMessageTypes.js';
import { InternalToolInfo, isAToolName } from '../../common/toolsService.js';
import { defaultProviderSettings, ProviderName, SettingsOfProvider } from '../../common/voidSettingsTypes.js';
import { defaultProviderSettings, displayInfoOfProviderName, ProviderName, SettingsOfProvider } from '../../common/voidSettingsTypes.js';
import { prepareFIMMessage, prepareMessages } from './preprocessLLMMessages.js';
import { extractReasoningFromText } from '../../browser/helpers/extractCodeFromResult.js';
@ -79,6 +79,8 @@ const modelOptionDefaults: ModelOptions = {
supportsReasoningOutput: false,
}
const invalidApiKeyMessage = (providerName: ProviderName) => `Invalid ${displayInfoOfProviderName(providerName).title} API key.`
// ---------------- OPENAI ----------------
const openAIModelOptions = { // https://platform.openai.com/docs/pricing
@ -644,7 +646,7 @@ const _sendOpenAICompatibleFIM = ({ messages: messages_, onFinalMessage, onError
onFinalMessage({ fullText, });
})
.catch(error => {
if (error instanceof OpenAI.APIError && error.status === 401) { onError({ message: 'Invalid API key.', fullError: error }); }
if (error instanceof OpenAI.APIError && error.status === 401) { onError({ message: invalidApiKeyMessage(providerName), fullError: error }); }
else { onError({ message: error + '', fullError: error }); }
})
}
@ -710,7 +712,7 @@ const _sendOpenAICompatibleChat = ({ messages: messages_, onText, onFinalMessage
})
// when error/fail - this catches errors of both .create() and .then(for await)
.catch(error => {
if (error instanceof OpenAI.APIError && error.status === 401) { onError({ message: 'Invalid API key.', fullError: error }); }
if (error instanceof OpenAI.APIError && error.status === 401) { onError({ message: invalidApiKeyMessage(providerName), fullError: error }); }
else { onError({ message: error + '', fullError: error }); }
})
}
@ -803,7 +805,7 @@ const sendAnthropicChat = ({ messages: messages_, onText, providerName, onFinalM
})
// on error
stream.on('error', (error) => {
if (error instanceof Anthropic.APIError && error.status === 401) { onError({ message: 'Invalid API key.', fullError: error }) }
if (error instanceof Anthropic.APIError && error.status === 401) { onError({ message: invalidApiKeyMessage(providerName), fullError: error }) }
else { onError({ message: error + '', fullError: error }) }
})
_setAborter(() => stream.controller.abort())

View file

@ -335,9 +335,9 @@ export const prepareFIMMessage = ({
}) => {
let prefix = `\
## You are a helpful coding assistant that performs autocomplete (fill-in-the middle or "FIM") for the user.
## You are a helpful coding assistant that performs autocomplete.
${!aiInstructions ? '' : `\
## Special user instructions:
## Instructions:
${aiInstructions.split('\n').map(line => `##${line}`).join('\n')}`}
${messages.prefix}`