
使用NestJS和Prisma構建REST API:身份驗證
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平臺上第三方機器人的使用和機器人群聊的趣味性。
本文章轉載微信公眾號@kate人不錯