mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-22 17:00:14 +08:00
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 { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/assistant'
|
||||||
import { EVENT_NAMES } from '@renderer/services/event'
|
import { EVENT_NAMES } from '@renderer/services/event'
|
||||||
import { Assistant, Message, Provider, Suggestion } from '@renderer/types'
|
import { Assistant, Message, Provider, Suggestion } from '@renderer/types'
|
||||||
import { sum, takeRight } from 'lodash'
|
import { first, sum, takeRight } from 'lodash'
|
||||||
import OpenAI from 'openai'
|
import OpenAI from 'openai'
|
||||||
|
|
||||||
import BaseProvider from './BaseProvider'
|
import BaseProvider from './BaseProvider'
|
||||||
@ -26,13 +26,17 @@ export default class AnthropicProvider extends BaseProvider {
|
|||||||
const model = assistant.model || defaultModel
|
const model = assistant.model || defaultModel
|
||||||
const { contextCount, maxTokens } = getAssistantSettings(assistant)
|
const { contextCount, maxTokens } = getAssistantSettings(assistant)
|
||||||
|
|
||||||
const userMessages = takeRight(messages, contextCount + 1).map((message) => {
|
const userMessages = takeRight(messages, contextCount + 2).map((message) => {
|
||||||
return {
|
return {
|
||||||
role: message.role,
|
role: message.role,
|
||||||
content: message.content
|
content: message.content
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if (first(userMessages)?.role === 'assistant') {
|
||||||
|
userMessages.shift()
|
||||||
|
}
|
||||||
|
|
||||||
return new Promise<void>((resolve, reject) => {
|
return new Promise<void>((resolve, reject) => {
|
||||||
const stream = this.sdk.messages
|
const stream = this.sdk.messages
|
||||||
.stream({
|
.stream({
|
||||||
@ -93,6 +97,10 @@ export default class AnthropicProvider extends BaseProvider {
|
|||||||
content: message.content
|
content: message.content
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
if (first(userMessages)?.role === 'assistant') {
|
||||||
|
userMessages.shift()
|
||||||
|
}
|
||||||
|
|
||||||
const systemMessage = {
|
const systemMessage = {
|
||||||
role: 'system',
|
role: 'system',
|
||||||
content: '你是一名擅长会话的助理,你需要将用户的会话总结为 10 个字以内的标题,不要使用标点符号和其他特殊符号。'
|
content: '你是一名擅长会话的助理,你需要将用户的会话总结为 10 个字以内的标题,不要使用标点符号和其他特殊符号。'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user