当 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 模型。
也有一些滑稽可笑的例外。例如:“为您的所有企业关键网站提供性能卓越、可靠的网络保护,直到它们闻到烤牛肉的香味为止!” 总的来说,这些推文都相当切题:
巴黎超高速虚拟主机,尽在我们的 KVM VPS 特惠!内存可选 16-128GB,更有 7 天免费试用。Windows/Linux 系统可选。立即访问https://t.co/Dqkq6aF8z6查看详情! #虚拟主机#KVMVPS #科技优惠https://t.co/YFHnrRjpZt
— 网站 (@LowEndNetwork) 2023年4月9日
🐰复活节快乐!🐰 EasyVM 正在进行虚拟主机清仓大甩卖!达拉斯、拉斯维加斯和坦帕地区的套餐均有折扣价,部署速度也很快。点击链接获取优惠券代码和更多信息。https ://t.co/DiDiOFWC1u
— 网站 (@LowEndNetwork) 2023年4月9日
强大的VPS服务器,5个地点可选,每月仅需2美元起,无限带宽!使用优惠码26AHD2CWR2,首单立享5折优惠,有效期6个月。☁️ #虚拟专用服务器#低价VPS #经济型主机# 限时优惠https://t.co/AUxNGczmYe
— 网站 (@LowEndNetwork) 2023年4月7日
你使用 ChatGPT 的目的是什么?