feat: sd pro

Signed-off-by: yihong0618 <zouzou0208@gmail.com>
This commit is contained in:
yihong0618 2024-05-20 21:21:30 +08:00
parent 7938e636df
commit aedeb4d2f2
4 changed files with 84 additions and 22 deletions

View File

@ -1,6 +1,7 @@
from telebot import TeleBot from telebot import TeleBot
from telebot.types import Message from telebot.types import Message
import requests import requests
from openai import OpenAI
from os import environ from os import environ
from . import * from . import *
@ -8,6 +9,13 @@ from . import *
SD_API_KEY = environ.get("SD3_KEY") SD_API_KEY = environ.get("SD3_KEY")
# TODO refactor this shit to __init__
CHATGPT_API_KEY = environ.get("OPENAI_API_KEY")
CHATGPT_BASE_URL = environ.get("OPENAI_API_BASE") or "https://api.openai.com/v1"
CHATGPT_PRO_MODEL = "gpt-4o-2024-05-13"
client = OpenAI(api_key=CHATGPT_API_KEY, base_url=CHATGPT_BASE_URL, timeout=20)
def get_user_balance(): def get_user_balance():
api_host = "https://api.stability.ai" api_host = "https://api.stability.ai"
@ -67,8 +75,46 @@ def sd_handler(message: Message, bot: TeleBot):
bot.reply_to(message, "sd3 error") bot.reply_to(message, "sd3 error")
if SD_API_KEY: def sd_pro_handler(message: Message, bot: TeleBot):
"""pretty sd3_pro: /sd3_pro <address>"""
credits = get_user_balance()
m = message.text.strip()
prompt = m.strip()
rewrite_prompt = (
f"revise `{prompt}` to a DALL-E prompt only return the prompt in English."
)
completion = client.chat.completions.create(
messages=[{"role": "user", "content": rewrite_prompt}],
max_tokens=2048,
model=CHATGPT_PRO_MODEL,
)
sd_prompt = completion.choices[0].message.content.encode("utf8").decode()
# drop all the Chinese characters
sd_prompt = "".join([i for i in sd_prompt if ord(i) < 128])
bot.reply_to(
message,
f"Generating pretty sd3-turbo image may take some time please left credits {credits} every try will cost 4 criedits wait:\n the real prompt is: {sd_prompt}",
)
try:
r = generate_sd3_image(sd_prompt)
if r:
with open(f"sd3.jpeg", "rb") as photo:
bot.send_photo(
message.chat.id, photo, reply_to_message_id=message.message_id
)
else:
bot.reply_to(message, "prompt error")
except Exception as e:
print(e)
bot.reply_to(message, "sd3 error")
if SD_API_KEY and CHATGPT_API_KEY:
def register(bot: TeleBot) -> None: def register(bot: TeleBot) -> None:
bot.register_message_handler(sd_handler, commands=["sd3"], pass_bot=True) bot.register_message_handler(sd_handler, commands=["sd3"], pass_bot=True)
bot.register_message_handler(sd_handler, regexp="^sd3:", pass_bot=True) bot.register_message_handler(sd_handler, regexp="^sd3:", pass_bot=True)
bot.register_message_handler(
sd_pro_handler, commands=["sd3_pro"], pass_bot=True
)
bot.register_message_handler(sd_pro_handler, regexp="^sd3_pro:", pass_bot=True)

46
pdm.lock generated
View File

@ -5,7 +5,7 @@
groups = ["default"] groups = ["default"]
strategy = ["cross_platform", "inherit_metadata"] strategy = ["cross_platform", "inherit_metadata"]
lock_version = "4.4.1" lock_version = "4.4.1"
content_hash = "sha256:41258ffa81dbc6929fd3df114f6a0e063eca63d217411d22cdafdca472e92a1a" content_hash = "sha256:ea5932fced9ce9422e0b98c61f6a83026ce71361be5b839f9969277e37bd3dab"
[[package]] [[package]]
name = "aiohttp" name = "aiohttp"
@ -97,7 +97,7 @@ files = [
[[package]] [[package]]
name = "anthropic" name = "anthropic"
version = "0.25.9" version = "0.26.0"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "The official Python library for the anthropic API" summary = "The official Python library for the anthropic API"
groups = ["default"] groups = ["default"]
@ -111,8 +111,8 @@ dependencies = [
"typing-extensions<5,>=4.7", "typing-extensions<5,>=4.7",
] ]
files = [ files = [
{file = "anthropic-0.25.9-py3-none-any.whl", hash = "sha256:d0b17d442160356a531593b237de55d3125cc6fa708f1268c214107e61c81c57"}, {file = "anthropic-0.26.0-py3-none-any.whl", hash = "sha256:38fc415561d71dcf263b89da0cc6ecec498379b56256fc4242e9128bc707b283"},
{file = "anthropic-0.25.9.tar.gz", hash = "sha256:a4ec810b1cfbf3340af99b6f5bf599a83d66986e0f572a5f3bc4ebcab284f629"}, {file = "anthropic-0.26.0.tar.gz", hash = "sha256:6aaffeb05d515cf9788eef57150a5f827f3786883628ccac71dbe5671ab6f44e"},
] ]
[[package]] [[package]]
@ -456,6 +456,20 @@ files = [
{file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
] ]
[[package]]
name = "dify-client"
version = "0.1.10"
requires_python = ">=3.6"
summary = "A package for interacting with the Dify Service-API"
groups = ["default"]
dependencies = [
"requests",
]
files = [
{file = "dify-client-0.1.10.tar.gz", hash = "sha256:117d7a61e221a95d12fa3eaf6e4f0563720a050ea4f1cbf849af44760307bf49"},
{file = "dify_client-0.1.10-py3-none-any.whl", hash = "sha256:7888536866591c5f42f9cae5275807c17d60f38467ee340a536eaed02314deb7"},
]
[[package]] [[package]]
name = "distro" name = "distro"
version = "1.9.0" version = "1.9.0"
@ -681,7 +695,7 @@ files = [
[[package]] [[package]]
name = "google-ai-generativelanguage" name = "google-ai-generativelanguage"
version = "0.6.3" version = "0.6.4"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Google Ai Generativelanguage API client library" summary = "Google Ai Generativelanguage API client library"
groups = ["default"] groups = ["default"]
@ -692,8 +706,8 @@ dependencies = [
"protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.19.5", "protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.19.5",
] ]
files = [ files = [
{file = "google-ai-generativelanguage-0.6.3.tar.gz", hash = "sha256:10a11f1e1bb8470ff50030c1acd729b3aba7a29ade2c30cf1d1c917291366c67"}, {file = "google-ai-generativelanguage-0.6.4.tar.gz", hash = "sha256:1750848c12af96cb24ae1c3dd05e4bfe24867dc4577009ed03e1042d8421e874"},
{file = "google_ai_generativelanguage-0.6.3-py3-none-any.whl", hash = "sha256:55a6698f6c9cbbfde5f9cd288073b6941dd9e3e6dc2176dfa3197f9a4c489895"}, {file = "google_ai_generativelanguage-0.6.4-py3-none-any.whl", hash = "sha256:730e471aa549797118fb1c88421ba1957741433ada575cf5dd08d3aebf903ab1"},
] ]
[[package]] [[package]]
@ -783,12 +797,12 @@ files = [
[[package]] [[package]]
name = "google-generativeai" name = "google-generativeai"
version = "0.5.3" version = "0.5.4"
requires_python = ">=3.9" requires_python = ">=3.9"
summary = "Google Generative AI High level API client library and tools." summary = "Google Generative AI High level API client library and tools."
groups = ["default"] groups = ["default"]
dependencies = [ dependencies = [
"google-ai-generativelanguage==0.6.3", "google-ai-generativelanguage==0.6.4",
"google-api-core", "google-api-core",
"google-api-python-client", "google-api-python-client",
"google-auth>=2.15.0", "google-auth>=2.15.0",
@ -798,7 +812,7 @@ dependencies = [
"typing-extensions", "typing-extensions",
] ]
files = [ files = [
{file = "google_generativeai-0.5.3-py3-none-any.whl", hash = "sha256:a74509ee219601c74c0561eb4e1c9af6a88594c7dd098d30a18c6592afe62bd9"}, {file = "google_generativeai-0.5.4-py3-none-any.whl", hash = "sha256:036d63ee35e7c8aedceda4f81c390a5102808af09ff3a6e57e27ed0be0708f3c"},
] ]
[[package]] [[package]]
@ -817,7 +831,7 @@ files = [
[[package]] [[package]]
name = "groq" name = "groq"
version = "0.5.0" version = "0.6.0"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "The official Python library for the groq API" summary = "The official Python library for the groq API"
groups = ["default"] groups = ["default"]
@ -830,8 +844,8 @@ dependencies = [
"typing-extensions<5,>=4.7", "typing-extensions<5,>=4.7",
] ]
files = [ files = [
{file = "groq-0.5.0-py3-none-any.whl", hash = "sha256:a7e6be1118bcdfea3ed071ec00f505a34d4e6ec28c435adb5a5afd33545683a1"}, {file = "groq-0.6.0-py3-none-any.whl", hash = "sha256:99e2e5ea48df074c09bffcc349b049d3573d9cb35da872d4acbbe50a4b266414"},
{file = "groq-0.5.0.tar.gz", hash = "sha256:d476cdc3383b45d2a4dc1876142a9542e663ea1029f9e07a05de24f895cae48c"}, {file = "groq-0.6.0.tar.gz", hash = "sha256:a96f3a49a0d4119a1bec7f6352af0a87733a2865d464da34a4eb27bfe8068c7e"},
] ]
[[package]] [[package]]
@ -1741,7 +1755,7 @@ files = [
[[package]] [[package]]
name = "pytelegrambotapi" name = "pytelegrambotapi"
version = "4.18.0" version = "4.18.1"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Python Telegram bot api." summary = "Python Telegram bot api."
groups = ["default"] groups = ["default"]
@ -1749,8 +1763,8 @@ dependencies = [
"requests", "requests",
] ]
files = [ files = [
{file = "pytelegrambotapi-4.18.0-py3-none-any.whl", hash = "sha256:88a980ed75f3ea611c97fcb375fc787fc6ef4f1e2f61ae59a14d7377058376a1"}, {file = "pytelegrambotapi-4.18.1-py3-none-any.whl", hash = "sha256:07951383c5831b1f810edaf01e06ee95a40253486d725780cf88de15aa0893ce"},
{file = "pytelegrambotapi-4.18.0.tar.gz", hash = "sha256:a8a18c1fe847d1dc2622279d21ec591e47e0c067278eeb2275c759dfbc9522d5"}, {file = "pytelegrambotapi-4.18.1.tar.gz", hash = "sha256:6bf79a726624441e84724d933312edb3138ad22906ffea2fee09ee6846236ac0"},
] ]
[[package]] [[package]]

View File

@ -16,5 +16,6 @@ dependencies = [
"requests", "requests",
"groq", "groq",
"together>=1.1.5", "together>=1.1.5",
"dify-client>=0.1.10",
] ]
requires-python = ">=3.10" requires-python = ">=3.10"

View File

@ -4,7 +4,7 @@
aiohttp==3.9.5 aiohttp==3.9.5
aiosignal==1.3.1 aiosignal==1.3.1
annotated-types==0.6.0 annotated-types==0.6.0
anthropic==0.25.9 anthropic==0.26.0
anyio==4.3.0 anyio==4.3.0
async-timeout==4.0.3; python_version < "3.11" async-timeout==4.0.3; python_version < "3.11"
attrs==23.2.0 attrs==23.2.0
@ -23,6 +23,7 @@ contourpy==1.2.1
cssselect2==0.7.0 cssselect2==0.7.0
cycler==0.12.1 cycler==0.12.1
defusedxml==0.7.1 defusedxml==0.7.1
dify-client==0.1.10
distro==1.9.0 distro==1.9.0
emoji==2.11.1 emoji==2.11.1
eval-type-backport==0.2.0 eval-type-backport==0.2.0
@ -34,14 +35,14 @@ frozenlist==1.4.1
fsspec==2024.3.1 fsspec==2024.3.1
geopandas==0.14.4 geopandas==0.14.4
github-poster==2.7.4 github-poster==2.7.4
google-ai-generativelanguage==0.6.3 google-ai-generativelanguage==0.6.4
google-api-core==2.19.0 google-api-core==2.19.0
google-api-python-client==2.128.0 google-api-python-client==2.128.0
google-auth==2.29.0 google-auth==2.29.0
google-auth-httplib2==0.2.0 google-auth-httplib2==0.2.0
google-generativeai==0.5.3 google-generativeai==0.5.4
googleapis-common-protos==1.63.0 googleapis-common-protos==1.63.0
groq==0.5.0 groq==0.6.0
grpcio==1.63.0 grpcio==1.63.0
grpcio-status==1.62.2 grpcio-status==1.62.2
h11==0.14.0 h11==0.14.0
@ -78,7 +79,7 @@ pygments==2.18.0
pyogrio==0.7.2 pyogrio==0.7.2
pyparsing==3.1.2 pyparsing==3.1.2
pyproj==3.6.1 pyproj==3.6.1
pytelegrambotapi==4.18.0 pytelegrambotapi==4.18.1
python-dateutil==2.9.0.post0 python-dateutil==2.9.0.post0
pytz==2024.1 pytz==2024.1
pyyaml==6.0.1 pyyaml==6.0.1