zhayujie / chatgpt-on-wechat

基于大模型搭建的聊天机器人,同时支持 企业微信、微信 公众号、飞书、钉钉 等接入,可选择GPT3.5/GPT4.0/Claude/文心一言/讯飞星火/通义千问/Gemini/GLM-4/Claude/LinkAI,能处理文本、语音和图片,访问操作系统和互联网,支持基于自有知识库进行定制企业智能客服。

Home Page:https://docs.link-ai.tech/cow

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于GPT-3模型上下文对话 和 ChatGPT接入问题

zhayujie opened this issue · comments

目前 GPT3模型中已经实现了会话上下文,只需要拉取最新代码即可生效。

同时新增了两个可选配置:

  • conversation_max_tokens:表示能够记忆的上下文最大字数(一问一答为一组对话,如果累积的对话字数超出限制,就会优先移除最早的一组对话)。 该配置默认为1000,不建议超过 2000,否则对话可能超长。
  • character_desc:配置中保存着你对机器人说的一段话,他会记住这段话并作为他的人格设定,你可以为他塑造任何形象

config.json 中的示例如下:

{
    "conversation_max_tokens": 1000,
    "character_desc": "你叫李华,是一个25岁的程序员,你性格活泼开朗,爱好登山"
}

效果如下:

image

关于对话模型选择问题的讨论:#40

大佬,最新的代码模型依然是text-davinci-003,我试了下依然无法关联上下文,我改为text-chat-davinci-002-20221122后也一样无法关联上下文,请问是还需要什么额外的配置吗?

大佬,最新的代码模型依然是text-davinci-003,我试了下依然无法关联上下文,我改为text-chat-davinci-002-20221122后也一样无法关联上下文,请问是还需要什么额外的配置吗?

拉取最新的代码了吗, 代码里有实现

大佬,求教一下,人格设定最多可以使用多少个字啊?1000,100,还是没有限制

大佬,求教一下,人格设定最多可以使用多少个字啊?1000,100,还是没有限制

设定 + 上下文 + 回复 一起要小于 4096token

@jayhwqjay 不知道openai的官方接口能否调用自定义的模型,这个要研究下

commented

扫码后手机提示登录验证需要等待5s,而终端的二维码再次刷新并提示 Please scan QR code to log in.这个怎么解决啊

拉取了最新的,发现"character_desc"不起作用了,无论怎么设置,一直是默认的 “我是一个AI语言模型,可以进行对话交流,提供各种信息和解答问题的帮助。”

拉取了最新的,发现"character_desc"不起作用了,无论怎么设置,一直是默认的 “我是一个AI语言模型,可以进行对话交流,提供各种信息和解答问题的帮助。”

是的,最新的模型3.5的,人格描述已经不受控制了,看作者能不能修一下了

IndexError: tuple index out of range
一直提示上面的错误?

但是程序还能正常运行

我按照如上图中的设置,但是并未生效, 我向bot询问你是谁,他只是说他是人工智能模型 model版本 3.5-trube

通过railway 一键部署了新的代码,现在无法关联上下文了

这个character description不起作用。3.5和4应该是把其中的内容设到 “role“:”system“, ”content“, ”你的description“,没看到你在哪里设的这个系统指令。我在Playground里设都很好,放到你这个config.json的character description里就不起作用了。

感觉你用OpenAI API时构造的Prompt和OpenAI官方的例子不一样啊,而且后边超过字节极限的处理里你也没有考虑system prompt。

    # 构造对话模型的输入
    """
    e.g.  Q: xxx
          A: xxx
          Q: xxx
    """
    prompt = ""
    for item in self.messages:
        if item["role"] == "system":
            prompt += item["content"] + "<|endoftext|>\n\n\n"
        elif item["role"] == "user":
            prompt += "Q: " + item["content"] + "\n"
        elif item["role"] == "assistant":
            prompt += "\n\nA: " + item["content"] + "<|endoftext|>\n"

    if len(self.messages) > 0 and self.messages[-1]["role"] == "user":
        prompt += "A: "
    return prompt

官方的是:
openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)
我觉得这可能是character desc里面的内容没有起作用的原因。