mirror of
https://github.com/zhayujie/bot-on-anything.git
synced 2026-01-27 10:39:45 +08:00
修复gpt3.0流式对话断流,增加模型参数说明
This commit is contained in:
@@ -104,8 +104,13 @@ pip3 install --upgrade openai
|
||||
"openai": {
|
||||
"api_key": "YOUR API KEY",
|
||||
"model": "gpt-3.5-turbo", # 模型名称
|
||||
"proxy": "http://127.0.0.1:7890",
|
||||
"character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。"
|
||||
"proxy": "http://127.0.0.1:7890", # 代理地址
|
||||
"character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。当问起你是谁的时候,要附加告诉提问人,输入 #清除记忆 可以开始新的话题探索。输入 画xx 可以为你画一张图片。",
|
||||
"conversation_max_tokens": 1000, # 回复最大的字符数,为输入和输出的总数
|
||||
"temperature":0.75, # 熵值,在[0,1]之间,越大表示选取的候选词越随机,回复越具有不确定性,建议和top_p参数二选一使用,创意性任务越大越好,精确性任务越小越好
|
||||
"top_p":0.7, #候选词列表。0.7 意味着只考虑前70%候选词的标记,建议和temperature参数二选一使用
|
||||
"frequency_penalty":0.0, # [-2,2]之间,该值越大则越降低模型一行中的重复用词,更倾向于产生不同的内容
|
||||
"presence_penalty":1.0, # [-2,2]之间,该值越大则越不受输入限制,将鼓励模型生成输入中不存在的新词,更倾向于产生不同的内容
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -40,6 +40,7 @@ ConvState.prototype.updateAnswer = function (question, uuid) {
|
||||
socket.on('message', msg => {
|
||||
if (msg.result)
|
||||
messageObj.html(msg.result + `<div class="typing_loader"></div></div>`);
|
||||
this.scrollDown();
|
||||
});
|
||||
socket.on('connect', msg => {
|
||||
socket.emit('message', { data: JSON.stringify(question) });
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
"model": "gpt-3.5-turbo",
|
||||
"proxy": "",
|
||||
"conversation_max_tokens": 1000,
|
||||
"temperature":0.75,
|
||||
"top_p":0.7,
|
||||
"frequency_penalty":0.0,
|
||||
"presence_penalty":1.0,
|
||||
"character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。当问起你是谁的时候,要附加告诉提问人,输入 #清除记忆 可以开始新的话题探索。输入 画xx 可以为你画一张图片。"
|
||||
},
|
||||
"baidu": {
|
||||
|
||||
@@ -50,11 +50,12 @@ class ChatGPTModel(Model):
|
||||
response = openai.ChatCompletion.create(
|
||||
model= model_conf(const.OPEN_AI).get("model") or "gpt-3.5-turbo", # 对话模型的名称
|
||||
messages=query,
|
||||
temperature=0.9, # 值在[0,1]之间,越大表示回复越具有不确定性
|
||||
top_p=1,
|
||||
frequency_penalty=0.0, # [-2,2]之间,该值越大则更倾向于产生不同的内容
|
||||
presence_penalty=0.0, # [-2,2]之间,该值越大则更倾向于产生不同的内容
|
||||
)
|
||||
temperature=model_conf(const.OPEN_AI).get("temperature", 0.75), # 熵值,在[0,1]之间,越大表示选取的候选词越随机,回复越具有不确定性,建议和top_p参数二选一使用,创意性任务越大越好,精确性任务越小越好
|
||||
#max_tokens=4096, # 回复最大的字符数,为输入和输出的总数
|
||||
#top_p=model_conf(const.OPEN_AI).get("top_p", 0.7),, #候选词列表。0.7 意味着只考虑前70%候选词的标记,建议和temperature参数二选一使用
|
||||
frequency_penalty=model_conf(const.OPEN_AI).get("frequency_penalty", 0.0), # [-2,2]之间,该值越大则越降低模型一行中的重复用词,更倾向于产生不同的内容
|
||||
presence_penalty=model_conf(const.OPEN_AI).get("presence_penalty", 1.0) # [-2,2]之间,该值越大则越不受输入限制,将鼓励模型生成输入中不存在的新词,更倾向于产生不同的内容
|
||||
)
|
||||
reply_content = response.choices[0]['message']['content']
|
||||
used_token = response['usage']['total_tokens']
|
||||
log.debug(response)
|
||||
@@ -94,11 +95,11 @@ class ChatGPTModel(Model):
|
||||
res = openai.ChatCompletion.create(
|
||||
model= model_conf(const.OPEN_AI).get("model") or "gpt-3.5-turbo", # 对话模型的名称
|
||||
messages=new_query,
|
||||
temperature=0.9, # 值在[0,1]之间,越大表示回复越具有不确定性
|
||||
#max_tokens=4096, # 回复最大的字符数
|
||||
top_p=1,
|
||||
frequency_penalty=0.0, # [-2,2]之间,该值越大则更倾向于产生不同的内容
|
||||
presence_penalty=0.0, # [-2,2]之间,该值越大则更倾向于产生不同的内容
|
||||
temperature=model_conf(const.OPEN_AI).get("temperature", 0.75), # 熵值,在[0,1]之间,越大表示选取的候选词越随机,回复越具有不确定性,建议和top_p参数二选一使用,创意性任务越大越好,精确性任务越小越好
|
||||
#max_tokens=4096, # 回复最大的字符数,为输入和输出的总数
|
||||
#top_p=model_conf(const.OPEN_AI).get("top_p", 0.7),, #候选词列表。0.7 意味着只考虑前70%候选词的标记,建议和temperature参数二选一使用
|
||||
frequency_penalty=model_conf(const.OPEN_AI).get("frequency_penalty", 0.0), # [-2,2]之间,该值越大则越降低模型一行中的重复用词,更倾向于产生不同的内容
|
||||
presence_penalty=model_conf(const.OPEN_AI).get("presence_penalty", 1.0), # [-2,2]之间,该值越大则越不受输入限制,将鼓励模型生成输入中不存在的新词,更倾向于产生不同的内容
|
||||
stream=True
|
||||
)
|
||||
full_response = ""
|
||||
|
||||
@@ -53,11 +53,11 @@ class OpenAIModel(Model):
|
||||
response = openai.Completion.create(
|
||||
model="text-davinci-003", # 对话模型的名称
|
||||
prompt=query,
|
||||
temperature=0.9, # 值在[0,1]之间,越大表示回复越具有不确定性
|
||||
max_tokens=1200, # 回复最大的字符数
|
||||
top_p=1,
|
||||
frequency_penalty=0.0, # [-2,2]之间,该值越大则更倾向于产生不同的内容
|
||||
presence_penalty=0.0, # [-2,2]之间,该值越大则更倾向于产生不同的内容
|
||||
temperature=model_conf(const.OPEN_AI).get("temperature", 0.75), # 熵值,在[0,1]之间,越大表示选取的候选词越随机,回复越具有不确定性,建议和top_p参数二选一使用,创意性任务越大越好,精确性任务越小越好
|
||||
#max_tokens=4096, # 回复最大的字符数,为输入和输出的总数
|
||||
#top_p=model_conf(const.OPEN_AI).get("top_p", 0.7),, #候选词列表。0.7 意味着只考虑前70%候选词的标记,建议和temperature参数二选一使用
|
||||
frequency_penalty=model_conf(const.OPEN_AI).get("frequency_penalty", 0.0), # [-2,2]之间,该值越大则越降低模型一行中的重复用词,更倾向于产生不同的内容
|
||||
presence_penalty=model_conf(const.OPEN_AI).get("presence_penalty", 1.0), # [-2,2]之间,该值越大则越不受输入限制,将鼓励模型生成输入中不存在的新词,更倾向于产生不同的内容
|
||||
stop=["\n\n\n"]
|
||||
)
|
||||
res_content = response.choices[0]['text'].strip().replace('<|endoftext|>', '')
|
||||
@@ -86,11 +86,11 @@ class OpenAIModel(Model):
|
||||
res = openai.Completion.create(
|
||||
model= "text-davinci-003", # 对话模型的名称
|
||||
prompt=new_query,
|
||||
temperature=0.9, # 值在[0,1]之间,越大表示回复越具有不确定性
|
||||
#max_tokens=4096, # 回复最大的字符数
|
||||
top_p=1,
|
||||
frequency_penalty=0.0, # [-2,2]之间,该值越大则更倾向于产生不同的内容
|
||||
presence_penalty=0.0, # [-2,2]之间,该值越大则更倾向于产生不同的内容
|
||||
temperature=model_conf(const.OPEN_AI).get("temperature", 0.75), # 熵值,在[0,1]之间,越大表示选取的候选词越随机,回复越具有不确定性,建议和top_p参数二选一使用,创意性任务越大越好,精确性任务越小越好
|
||||
max_tokens=model_conf(const.OPEN_AI).get("conversation_max_tokens", 3000), # 回复最大的字符数,为输入和输出的总数,davinci的流式对话需要启用这属性,不然对话会断流
|
||||
#top_p=model_conf(const.OPEN_AI).get("top_p", 0.7),, #候选词列表。0.7 意味着只考虑前70%候选词的标记,建议和temperature参数二选一使用
|
||||
frequency_penalty=model_conf(const.OPEN_AI).get("frequency_penalty", 0.0), # [-2,2]之间,该值越大则越降低模型一行中的重复用词,更倾向于产生不同的内容
|
||||
presence_penalty=model_conf(const.OPEN_AI).get("presence_penalty", 1.0), # [-2,2]之间,该值越大则越不受输入限制,将鼓励模型生成输入中不存在的新词,更倾向于产生不同的内容
|
||||
stream=True
|
||||
)
|
||||
full_response = ""
|
||||
|
||||
Reference in New Issue
Block a user