修改通译千问最新接口:1.删除history参数,改用官方推荐的messages参数 2.整理messages参数顺序,补充必要上下文信息 3.用autogen调试测试通过
This commit is contained in:
parent
366b82128f
commit
67020a3c08
@ -13,13 +13,13 @@ import (
|
|||||||
// https://help.aliyun.com/document_detail/613695.html?spm=a2c4g.2399480.0.0.1adb778fAdzP9w#341800c0f8w0r
|
// https://help.aliyun.com/document_detail/613695.html?spm=a2c4g.2399480.0.0.1adb778fAdzP9w#341800c0f8w0r
|
||||||
|
|
||||||
type AliMessage struct {
|
type AliMessage struct {
|
||||||
User string `json:"user"`
|
Content string `json:"content"`
|
||||||
Bot string `json:"bot"`
|
Role string `json:"role"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type AliInput struct {
|
type AliInput struct {
|
||||||
Prompt string `json:"prompt"`
|
//Prompt string `json:"prompt"`
|
||||||
History []AliMessage `json:"history"`
|
Messages []AliMessage `json:"messages"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type AliParameters struct {
|
type AliParameters struct {
|
||||||
@ -83,32 +83,78 @@ type AliChatResponse struct {
|
|||||||
|
|
||||||
func requestOpenAI2Ali(request GeneralOpenAIRequest) *AliChatRequest {
|
func requestOpenAI2Ali(request GeneralOpenAIRequest) *AliChatRequest {
|
||||||
messages := make([]AliMessage, 0, len(request.Messages))
|
messages := make([]AliMessage, 0, len(request.Messages))
|
||||||
prompt := ""
|
if len(messages) == 1 {
|
||||||
|
messages = append(messages, AliMessage{
|
||||||
|
Content: request.Messages[0].StringContent(),
|
||||||
|
Role: "user",
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
//1. 系统消息在最前面
|
||||||
|
//2. user和assistant必须交替成对出现
|
||||||
|
//3. 相邻同role消息合并
|
||||||
|
lastRole := ""
|
||||||
|
systemMessage := AliMessage{
|
||||||
|
Content: "",
|
||||||
|
Role: "system",
|
||||||
|
}
|
||||||
for i := 0; i < len(request.Messages); i++ {
|
for i := 0; i < len(request.Messages); i++ {
|
||||||
message := request.Messages[i]
|
message := request.Messages[i]
|
||||||
if message.Role == "system" {
|
content := message.StringContent()
|
||||||
messages = append(messages, AliMessage{
|
if content == "" || len(content) <= 0 {
|
||||||
User: message.StringContent(),
|
|
||||||
Bot: "Okay",
|
|
||||||
})
|
|
||||||
continue
|
continue
|
||||||
|
}
|
||||||
|
if strings.ToLower(message.Role) == "system" {
|
||||||
|
systemMessage.Content += "\n" + content
|
||||||
|
lastRole = "system"
|
||||||
|
} else if strings.ToLower(message.Role) == "user" {
|
||||||
|
if lastRole == "user" {
|
||||||
|
messages[len(messages)-1].Content += "\n" + content
|
||||||
} else {
|
} else {
|
||||||
if i == len(request.Messages)-1 {
|
|
||||||
prompt = message.StringContent()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
messages = append(messages, AliMessage{
|
messages = append(messages, AliMessage{
|
||||||
User: message.StringContent(),
|
Content: content,
|
||||||
Bot: request.Messages[i+1].StringContent(),
|
Role: "user",
|
||||||
})
|
})
|
||||||
i++
|
}
|
||||||
|
lastRole = "user"
|
||||||
|
} else {
|
||||||
|
if lastRole == "assistant" {
|
||||||
|
messages[len(messages)-1].Content += "\n" + content
|
||||||
|
} else {
|
||||||
|
messages = append(messages, AliMessage{
|
||||||
|
Content: content,
|
||||||
|
Role: "assistant",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
lastRole = "assistant"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 用户需要首先提问
|
||||||
|
if messages[0].Role != "user" {
|
||||||
|
messages = append([]AliMessage{
|
||||||
|
{
|
||||||
|
Content: "?",
|
||||||
|
Role: "user",
|
||||||
|
},
|
||||||
|
}, messages...)
|
||||||
|
}
|
||||||
|
// 把系统消息补充到头部
|
||||||
|
if len(systemMessage.Content) > 0 {
|
||||||
|
messages = append([]AliMessage{systemMessage}, messages...)
|
||||||
|
}
|
||||||
|
//最后如果不是user提问,补充一个没有问题了
|
||||||
|
if messages[len(messages)-1].Role != "user" {
|
||||||
|
messages = append(messages, AliMessage{
|
||||||
|
Content: "?",
|
||||||
|
Role: "user",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return &AliChatRequest{
|
return &AliChatRequest{
|
||||||
Model: request.Model,
|
Model: request.Model,
|
||||||
Input: AliInput{
|
Input: AliInput{
|
||||||
Prompt: prompt,
|
//Prompt: prompt,
|
||||||
History: messages,
|
Messages: messages,
|
||||||
},
|
},
|
||||||
//Parameters: AliParameters{ // ChatGPT's parameters are not compatible with Ali's
|
//Parameters: AliParameters{ // ChatGPT's parameters are not compatible with Ali's
|
||||||
// TopP: request.TopP,
|
// TopP: request.TopP,
|
||||||
|
Loading…
Reference in New Issue
Block a user