fix: anthropic first message must use the user role #39
{"type":"error","error":{"type":"invalid_request_error","message":"messages: first message must use the "user" role"}}
This commit is contained in:
parent
521670f683
commit
c257e8f0fe
@ -4,7 +4,7 @@ import { DEFAULT_MAX_TOKENS } from '@renderer/config/constant'
|
||||
import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/assistant'
|
||||
import { EVENT_NAMES } from '@renderer/services/event'
|
||||
import { Assistant, Message, Provider, Suggestion } from '@renderer/types'
|
||||
import { sum, takeRight } from 'lodash'
|
||||
import { first, sum, takeRight } from 'lodash'
|
||||
import OpenAI from 'openai'
|
||||
|
||||
import BaseProvider from './BaseProvider'
|
||||
@ -26,13 +26,17 @@ export default class AnthropicProvider extends BaseProvider {
|
||||
const model = assistant.model || defaultModel
|
||||
const { contextCount, maxTokens } = getAssistantSettings(assistant)
|
||||
|
||||
const userMessages = takeRight(messages, contextCount + 1).map((message) => {
|
||||
const userMessages = takeRight(messages, contextCount + 2).map((message) => {
|
||||
return {
|
||||
role: message.role,
|
||||
content: message.content
|
||||
}
|
||||
})
|
||||
|
||||
if (first(userMessages)?.role === 'assistant') {
|
||||
userMessages.shift()
|
||||
}
|
||||
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
const stream = this.sdk.messages
|
||||
.stream({
|
||||
@ -93,6 +97,10 @@ export default class AnthropicProvider extends BaseProvider {
|
||||
content: message.content
|
||||
}))
|
||||
|
||||
if (first(userMessages)?.role === 'assistant') {
|
||||
userMessages.shift()
|
||||
}
|
||||
|
||||
const systemMessage = {
|
||||
role: 'system',
|
||||
content: '你是一名擅长会话的助理,你需要将用户的会话总结为 10 个字以内的标题,不要使用标点符号和其他特殊符号。'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user