feat: 添加指定模型的能力 (#74)

This commit is contained in:
二丫讲梵
2023-03-07 13:29:05 +08:00
committed by GitHub
parent ab6ecc3f26
commit acb5462a01
8 changed files with 71 additions and 46 deletions

View File

@@ -156,31 +156,60 @@ func (c *ChatGPT) ChatWithContext(question string) (answer string, err error) {
if len(prompt) > c.maxText-c.maxAnswerLen {
return "", OverMaxTextLength
}
c1 := gogpt.ChatCompletionRequest{
Model: gogpt.GPT3Dot5Turbo,
Messages: []gogpt.ChatCompletionMessage{
{
Role: "user",
Content: prompt,
},
}}
req := c1
resp, err := c.client.CreateChatCompletion(c.ctx, req)
if err != nil {
return "", err
if public.Config.Model == gogpt.GPT3Dot5Turbo0301 || public.Config.Model == gogpt.GPT3Dot5Turbo {
req := gogpt.ChatCompletionRequest{
Model: public.Config.Model,
Messages: []gogpt.ChatCompletionMessage{
{
Role: "user",
Content: prompt,
},
}}
resp, err := c.client.CreateChatCompletion(c.ctx, req)
if err != nil {
return "", err
}
resp.Choices[0].Message.Content = formatAnswer(resp.Choices[0].Message.Content)
c.ChatContext.old = append(c.ChatContext.old, conversation{
Role: c.ChatContext.humanRole,
Prompt: question,
})
c.ChatContext.old = append(c.ChatContext.old, conversation{
Role: c.ChatContext.aiRole,
Prompt: resp.Choices[0].Message.Content,
})
c.ChatContext.seqTimes++
return resp.Choices[0].Message.Content, nil
} else {
req := gogpt.CompletionRequest{
Model: public.Config.Model,
MaxTokens: c.maxAnswerLen,
Prompt: prompt,
Temperature: 0.9,
TopP: 1,
N: 1,
FrequencyPenalty: 0,
PresencePenalty: 0.5,
User: c.userId,
Stop: []string{c.ChatContext.aiRole.Name + ":", c.ChatContext.humanRole.Name + ":"},
}
resp, err := c.client.CreateCompletion(c.ctx, req)
if err != nil {
return "", err
}
resp.Choices[0].Text = formatAnswer(resp.Choices[0].Text)
c.ChatContext.old = append(c.ChatContext.old, conversation{
Role: c.ChatContext.humanRole,
Prompt: question,
})
c.ChatContext.old = append(c.ChatContext.old, conversation{
Role: c.ChatContext.aiRole,
Prompt: resp.Choices[0].Text,
})
c.ChatContext.seqTimes++
return resp.Choices[0].Text, nil
}
resp.Choices[0].Message.Content = formatAnswer(resp.Choices[0].Message.Content)
c.ChatContext.old = append(c.ChatContext.old, conversation{
Role: c.ChatContext.humanRole,
Prompt: question,
})
c.ChatContext.old = append(c.ChatContext.old, conversation{
Role: c.ChatContext.aiRole,
Prompt: resp.Choices[0].Message.Content,
})
c.ChatContext.seqTimes++
return resp.Choices[0].Message.Content, nil
}
func WithMaxSeqTimes(times int) ChatContextOption {