查看原文
其他

用 Poe-API-wrapper 连接 DALLE、ChatGPT,批量完成AI绘图或文字创作

思辨view kate人不错 2024-05-19

我是Poe的忠实用户,之前写过已是ChatGPT会员,为何还充值Poe,我的深度使用分享来介绍Poe,虽然事实上,我每个月的Poe使用额度都有剩余。

Poe提供了API接口,可以整合到我们自己的程序中。这让我思考如何有效利用API接口。我也阅读了官方的API文档,并最终在GitHub上发现了一个非常实用的工具——poe-api-wrapper。

这个工具共享的是你在Poe的使用额度,不会额外收费。

https://developer.poe.com/https://github.com/snowby666/poe-api-wrapper

它是Poe.com 的一个 Python API 接口库,采用 Httpx 技术。使用它,你可以通过 API 接口免费连接到 ChatGPT、DALLE、Claude、Mistral、Gemini 等多种服务。

建议按以下操作,先运行示例了解下这个库的功能。

两种方式可以获得token,我用的是后者。

运行示例后的效果

连续生成图片

在Poe和GPT平台中,DALLE的图像生成速率都存在一定的限制。目前,这两个平台默认都只生成一张图片。参考了poe-api-wrapper仓库,我编写了一个Python代码,能够连续生成多张图片。

from poe_api_wrapper import PoeApi
import requests
import os

# 初始化 PoeApi 客户端
token = "yourtoken"
client = PoeApi(token)

# 从文件中读取提示列表
with open("draw-input.txt""r") as file:
    prompts = file.readlines()

# 去掉每行末尾的换行符,并过滤掉空行
prompts = [prompt.strip() for prompt in prompts if prompt.strip()]

# 定义保存图片的文件夹路径
save_folder = "/Users/yourpath"
# 确保保存图片的文件夹存在
if not os.path.exists(save_folder):
    os.makedirs(save_folder)

# 初始化chatCode
chatCode = None

# 循环遍历提示列表,并发送给 DALL-E 3
for prompt in prompts:
    print(f"正在请求: {prompt}")
    for _ in range(4):  # 重复生成4次图片
        for chunk in client.send_message("DALL-E-3", prompt, chatCode=chatCode, timeout=60):
            # 如果是新的对话,保存chatCode
            if not chatCode and 'chatCode' in chunk:
                chatCode = chunk['chatCode']
                print(f"新对话创建 | chatCode: {chatCode}")

            # 检查chunk中是否包含图片URL
            if 'response' in chunk and chunk['response'].startswith('!['):
                image_url = chunk['response'].split('(')[1].split(')')[0]
                print(f"生成的图片 URL: {image_url}")
                
                # 获取图片的内容
                response = requests.get(image_url)
                if response.status_code == 200:
                    # 从URL中提取图片文件名
                    filename = os.path.basename(image_url.split('?')[0])
                    # 定义图片保存路径
                    file_path = os.path.join(save_folder, filename)
                    
                    # 保存图片
                    with open(file_path, 'wb') as file:
                        file.write(response.content)
                    print(f"图片已保存到: {file_path}")
                else:
                    print(f"下载图片失败: {response.status_code}")

没多久,我就用DALLE3生成了200多张的图片。

代码功能说明:
1. 在代码所在的文件夹中,我创建了一个名为"draw-input.txt"的文件,用于存放AI绘图的提示词。文件中的每一行代表一个独立的提示词。当运行代码时,它会批量处理这些提示词,每个提示词默认生成4张图片。例如,如果你在这个txt文件中放入了10个提示词,并希望每个提示词生成10张图片,只需将代码中的数字4改为10,然后执行程序。生成的图片可以在你的Poe网页界面中查看。
2. Poe目前提供了三种AI绘图选项。在上述代码中,“DALL-E-3”可以直接替换为“Playground-v2”或“StableDiffusionXL”。但是,DALL-E-3的生成效果通常是最佳的。

生成的部分图片

注:上图的提示词参考了歸藏和Umesh(推特博主)。

连续生成对话

Poe里的机器人特别多,除了官方的,我们还可以用第三方建立的,只要设置好机器人的名字就行。

红色方框内就是机器人bot的名字

连续对话代码

from poe_api_wrapper import PoeApi
import datetime

# 初始化 PoeApi 客户端
token = "yourtoken"
client = PoeApi(token)

bot = "Claude-2-100k"

# 从文件中读取消息列表
with open("chat-input.txt""r") as file:
    messages = [line.strip() for line in file if line.strip()]  # 过滤掉空行

# 初始化 chatCode
chat_code = None

# 创建文件用于保存结果
now = datetime.datetime.now()
timestamp = now.strftime("%Y%m%d%H%M%S")
result_file = open(f"/Users/yourpath/result_{timestamp}.md""w")

# 循环发送消息
for message in messages:
    if chat_code:
        response_gen = client.send_message(bot, message, chatCode=chat_code)
    else:
        response_gen = client.send_message(bot, message)

    for chunk in response_gen:
        if 'chatCode' in chunk and not chat_code:
            chat_code = chunk['chatCode']
        
        # 写入去除了前导空格的回应
        result_file.write(chunk["response"].lstrip())  # 使用 lstrip() 移除左侧空格
        result_file.flush()
    
    # 在每个结果后增加一个额外的空行
    result_file.write("\n\n")

# 关闭结果文件
result_file.close()
代码功能说明:
1. 在代码所在的文件夹里,我创建了一个文件名为"chat-input.txt",用于存放对话的关键词。文件中的每行包含一个独立的关键词。执行代码后,它将自动批量处理这些关键词。
2. 在代码中,我设置了默认机器人为"Claude-2-100k",但你可以根据需要更换为其他机器人。我已经测试了大多数官方机器人(除了Mistral-Medium之外的都可以使用),并且也试用了一些第三方机器人,它们都可以直接使用。

应用场景:写教程

使用GPT生成的大纲作为chat-input的输入内容,执行程序后,就可以创建一个大约30kb的文件。

我的理解是,我们在学习时往往只关注关键点。我们通常会带着具体问题去深入一个主题。如果我们将一系列相关问题直接提给大型语言模型,得到的答案可能会比较泛泛。因此,针对性地逐个提问更为合适。这样做的好处是,每当模型回答了一个问题,它就在思考的过程中积累了经验,从而能够在之后的回答中表现得更加精准和深入。

应用场景-写小说

我向GPT请求了一份小说大纲和20个小说标题。将这些标题输入到chat-input.txt文件后,我运行了程序。结果是,ChatGPT-16k机器人为我创作了超过30,000字的小说。我选择ChatGPT-16k的原因是其处理速度较快,而GPT-4的速度相对较慢。另外,Poe平台提供的ChatGPT-16k使用额度也比较充足。

生成的小说质量一般,需要优化提示词。

应用场景-批量写作

我构想了一个有趣的应用场景:想象一下,在寒假的最后一天,小朋友需要完成30篇作文。现在,我只需将这30个作文主题录入一个文本文件,运行程序,几分钟内这30篇作文就能完成,无需等待每个话题的逐一生成。
同样的,如果我想撰写一篇文章,围绕一个主题编写10个不同版本,然后从中选择最佳作品。这就像使用GPT的DALL-E功能一样——不断追求更加精致和完美的创作(更多,更多,再更多)。我会在chat-txt文件的每行中添加指令,比如“再思考一下其他修改点”、“使文章更专业”、“提高写作质量”,甚至“创作出宇宙级最佳文章”。

应用场景-批量检索

众所周知,Perplexity.ai使用起来非常方便,但它一次只能生成一个答案。现在,利用我编写的代码,只需将bot设置为"Web-Search",并把我想查询的问题批量输入到chat-txt文件中,运行程序后,它能在几分钟内完成所有搜索(Web-Search默认使用的是gpt-3.5-turbo,处理速度极快)。这种批量检索方式非常适合写作,因为我可以一次性提出所有问题,程序会整合搜索结果,并提供相关索引,极大地提高了写作效率。

在Poe平台上,使用第三方机器人非常简便。例如,我可以先利用特定的机器人来批量产生AI绘图的提示词。然后,把这些提示词输入到draw-input文件中,接着就可以批量生成相应的图片了。

poe-api-wrapper推出的机器人群聊也很有意思。

我尝试了一下,设置了几个机器人模型,其中一个我特意配置成了“Web-Search”机器人,这样在对话中就能包含搜索结果。

我有个有趣的尝试:同时与三个不同的模型进行圆桌会议。这听起来挺有趣的,对吧?这样的对话结果既会在终端上显示,同时也会在Poe的网页界面上呈现。

总结:

1. 本文深入探讨了Poe API的高效应用及其在各种场景下的实际价值。
2. 通过poe-api-wrapper,我们不仅可以批量生成AI绘图和文本,还能与多种AI模型如ChatGPT、Claude、DALL-E等进行交互。
3. 实际案例涵盖了教程编写、小说创作、批量写作、批量检索等多个方面,展示了Poe API在提高工作效率和创意表达方面的巨大潜力。
4. 此外,文章还探讨了Poe平台上第三方机器人的使用和机器人群聊的趣味性。

了解更多内容,请看这里:

Poe新增知识库功能,深入介绍Poe机器人的创建

CrewAI:适用本地大模型AI自动化协作框架

LM Studio-简化安装和使用开源大模型 | OpenAI API 文字转语音本地运行程序分享

实测在Mac上使用Ollama与AI对话的过程 - 模型选择、安装、集成使用记,从Mixtral8x7b到Yi-34B-Chat

Ollama 现在支持安装微软发布的Phi-2模型,附安装流程

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存