LowEndTalk ChatGPT 自动发推器的工作原理 LowEndTalk ChatGPT 自动发推器的工作原理

LowEndTalk ChatGPT 自动发推器的工作原理

LowEndChatGPT当 ZHUJIMAO.COM 社区的成员在 LET 上分享优惠信息时,我们希望让全世界都知道。我们实现这一目标的方式之一就是在 Twitter 上发布该帖子的链接。我们通过一个与 Twitter API 交互的 Python 脚本来实现这一点。

它每小时查看一次 LET 优惠类别中的所有帖子(通过 RSS 源,使用 Python 的feedparser模块),将其与它已经发布的优惠列表进行比较,然后选择最早的未发布优惠并发布相关推文。

顺便说一下,您可以使用 Python 自行监控优惠信息: 请查看我们发布的教程

现在我们可以直接贴链接,但我们想明确说明这是一个优惠活动。最初的代码是这样的:

 possible_tweet_bodies = [ '令人震惊!' , "新协议已发布!', 
   “快来看看这个优惠!”等等。
tweet_body = random.choice(possible_tweet_bodies)

这种方法虽然可行,但显然过于重复,而且并没有真正向读者传达有关优惠的任何信息。

ChatGPT 登场……以及一个障碍

为了让代码更有用,我决定尝试使用 ChatGPT。现在的代码会获取帖子内容并将其传递给 ChatGPT。最初,我给 ChatGPT 发送类似“写一条关于此内容的推文:(帖子内容)”这样的提示。

它确实有效,但问题在于返回的内容可能远远超过 280 个字符。遗憾的是,ChatGPT 对字符的计数并不准确。虽然在 API 调用中可以指定最大词元数,但一个词元指的是一个单词——从“a”到“antidisestablishmentarianism”都可以。

此外,我们还需要考虑链接,Twitter 会将其缩短为 23 个字符的 t.co 链接。目前没有 API 可以提前获取 t.co 链接,即使生成的链接少于 23 个字符,Twitter 仍然会限制 23 个字符。因此,如果您使用链接,则内容长度不能超过 257 个字符。

遗憾的是,我指示 ChatGPT “写一条不超过 257 个字符的推文,内容是关于……” 并没有生效。它仍然返回超过 280 个字符(有时甚至超过 800 个字符!)的内容!

我们不能直接在 257 处截断——那可能在句子的中间。我尝试过“一条短推文”、“一条非常短的推文”等等组合,但都没用。我还试过说“没有话题标签”,但也没用。

但是,这是生成式编程,而 Infinity 是我们可以使用的工具。所以代码看起来是这样的:

响应 = ""
start = "写一条关于此次虚拟主机促销活动的简短推文"
对于计数器在范围(1,31):
    chatgpt_query = "{0:s} {0:s}: {1:s}".format( start, offer.title , offer.summary )
    chatgpt_response = get_tweet_body ( chatgpt_query )
    chatgpt_content = chatgpt_response.content.replace('"','')
    如果 len(chatgpt_content) > 257:
        debug("指令 [{0:d}]: 响应长度 {1:d},跳过".format(counter,len(chatgpt_content)))
    别的:
        响应 = chatgpt_content
        休息

如果响应 == "":
    info("错误:未生成长度小于 257 个字符的推文")
    sys.exit(1)

换句话说,我们会尝试 30 次。如果输入的文本长度超过 257 个字符,程序就会退出——在这种情况下没问题,因为程序会在一小时后重试。在大约一周的运行中,这种情况还没有发生过。

如果你好奇的话,get_tweet_body 函数其实很简单:

 def get_tweet_body(input):
   debug ("get_tweet_body() 输入:{0:s}".format(input))
   response = openai.ChatCompletion.create(
      model='gpt-3.5-turbo',
      messages=[ {
         '角色': '用户', 
         '内容':输入
      } ],
      温度=1.5
   )
   返回 response['choices'][0]['message']

为了增加多样性,我稍微调高了温度。我们使用的是基于 OpenAI Brood 进行的一些实验而开发的 GPT 3.5 Turbo 模型。

也有一些滑稽可笑的例外。例如:“为您的所有企业关键网站提供性能卓越、可靠的网络保护,直到它们闻到烤牛肉的香味为止!” 总的来说,这些推文都相当切题:

你使用 ChatGPT 的目的是什么?