Spaces:
Runtime error
Runtime error
# install the lib of : https://github.com/pengwangucla/cv_utils | |
from vis_common import * | |
import vis_utils as v_uts | |
import json | |
import os | |
import time | |
import base64 | |
import requests | |
from openai import OpenAI | |
from tenacity import retry, wait_random_exponential, stop_after_attempt, wait_fixed | |
from GPT_prompts import REWRITE_PROMPT_0 | |
API_KEY = os.environ.get("BYTE_API_KEY") | |
class EditActionClassifier(): | |
def __init__(self): | |
self.client = OpenAI() | |
self.assistant_key = "asst_57vfLupV8VCsCZx0BJOppSnw" | |
self.thread = self.client.beta.threads.create() | |
def infer(self, edit_action): | |
message = self.client.beta.threads.messages.create( | |
thread_id=self.thread.id, | |
role="user", | |
content=edit_action | |
) | |
run = self.client.beta.threads.runs.create( | |
thread_id=self.thread.id, | |
assistant_id=self.assistant_key, | |
) | |
pbar = tqdm(total=100) | |
while run.status != 'completed': | |
run = self.client.beta.threads.runs.retrieve( | |
thread_id=self.thread.id, | |
run_id=run.id | |
) | |
time.sleep(.5) # Sleep and check run status again | |
pbar.update(1) | |
pbar.set_description('Run Status: ' + run.status) | |
if run.status == 'failed': | |
break | |
if run.status == 'failed': | |
print("Run failed") | |
return "" | |
messages = self.client.beta.threads.messages.list( | |
thread_id=self.thread.id | |
) | |
result = messages.data[0].content[0].text.value | |
if "edit class" in results: | |
try: | |
class_name = json.loads(result)["edit class"] | |
except Exception as e: | |
print(f"{result}, can not be load by json") | |
class_name = result | |
return class_name | |
def test_personal_dalle3(): | |
# Call the API | |
client = OpenAI() | |
response = client.images.generate( | |
model="dall-e-3", | |
prompt="a cute cat with a hat on", | |
size="1792x1024", | |
quality="standard", | |
n=1, | |
) | |
image_url = response.data[0].url | |
image_url = "https://oaidalleapiprodscus.blob.core.windows.net/private/org-S0JkO5ALwPh1E3YpnKFiS7Gh/user-gJLc6S6Gmp2NCFBcEyZNgRNz/img-RDqXwfARPT6LSovnZXbMyzSO.png?st=2024-01-12T18%3A54%3A32Z&se=2024-01-12T20%3A54%3A32Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2024-01-11T22%3A56%3A51Z&ske=2024-01-12T22%3A56%3A51Z&sks=b&skv=2021-08-06&sig=BoeIYYvxu5Cnt4YfM53Az7EYlEYUTkWfXQCKrKaDWD0%3D" | |
# Download the image from the URL | |
image_response = requests.get(image_url) | |
# Check if the request was successful | |
if image_response.status_code == 200: | |
# Save the image to a file | |
with open('cute_cat_with_hat.jpg', 'wb') as file: | |
file.write(image_response.content) | |
else: | |
print("Failed to download the image.") | |
def test_call_gpt4_api(): | |
from langchain_community.chat_models import AzureChatOpenAI | |
from langchain.schema import HumanMessage | |
BASE_URL = "https://search-us.byteintl.net/gpt/openapi/online/v2/crawl/" | |
DEPLOYMENT_NAME = "gpt-4-0613" | |
DEPLOYMENT_NAME = "gpt-4-1106-preview" | |
model = AzureChatOpenAI( | |
openai_api_base=BASE_URL, | |
openai_api_version="2023-03-15-preview", | |
deployment_name=DEPLOYMENT_NAME, | |
openai_api_key=API_KEY, | |
openai_api_type="azure", | |
temperature=0.5, | |
max_tokens=512, | |
) | |
content = REWRITE_PROMPT_0.format(prompt1="Create a diptych image that consists two images. \ | |
The left image is front-view of lying real white 12 years old man. \ | |
The right image keep everything the same but change the background of the subject to europe.") | |
generate_log = model([HumanMessage(content=content)]).content | |
print(generate_log) | |
def test_call_gpt4v_api(): | |
from langchain_community.chat_models import AzureChatOpenAI | |
from langchain.schema import HumanMessage | |
BASE_URL = "https://search-us.byteintl.net/gpt/openapi/online/v2/crawl/" | |
DEPLOYMENT_NAME = "openai_gpt-4-vision" # gptv 或 openai_gpt-4-vision | |
model = AzureChatOpenAI( | |
openai_api_base=BASE_URL, | |
openai_api_version="2023-07-01-preview", | |
deployment_name=DEPLOYMENT_NAME, | |
openai_api_key=API_KEY, | |
openai_api_type="azure", | |
temperature=0.5, | |
max_tokens=512, | |
) | |
image_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" | |
input_ip = { | |
"url": image_url | |
} | |
image_path = "./imgs/dataset.jpg" | |
base64_image = v_uts.encode_b64(image_path) | |
input_ip = { | |
"url": f"data:image/jpeg;base64,{base64_image}" | |
} | |
generate_log = model([HumanMessage(content=[ | |
{ | |
"type": "text", | |
"text": "What’s in this image?" | |
}, | |
{ | |
"type": "image_url", | |
"image_url": input_ip | |
} | |
])]) | |
print(generate_log) | |
# curl --location --request POST 'https://search.bytedance.net/gpt/openapi/online/v2/crawl?ak=业务方AK' \ | |
# --header 'Content-Type: application/json' \ | |
# --header 'X-TT-LOGID: 请求方logID,方便定位问题' \ | |
# --data-raw '{ | |
# "prompt": "A poster of Microsoft", // 文字描述画图内容 | |
# "size": "1024x1024", // 图片大小。只支持 1024x1024 / 1024x1792 / 1792x1024 | |
# "quality": "standard", // 图片质量,默认standard | |
# "style": "vivid", // 图片风格,模型vivid | |
# "n": 1, | |
# "model": "dall-e-3" // 对应模型名称,必填 | |
# }' | |
# // response | |
# { | |
# "created": 1702889995, | |
# "data": [ | |
# { | |
# "url": "https://dalleprodsec.blob.core.windows.net/private/images/0811eacd-bf25-4961-814f-36d7f453907c/generated_00.png?se=2023-12-19T09%3A00%3A09Z&sig=cIRz7je1Qbjlt5GjeyLGKoxPRFggr7NAxLSeeCuGyYk%3D&ske=2023-12-22T11%3A18%3A13Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2023-12-15T11%3A18%3A13Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02", | |
# "revised_prompt": "A designed poster featuring the logo of a prominent technology company, accompanied by various emboldened text denoting the company's name and a motivational slogan. The distinct, four rectangular logo in bright colors is situated at the center of the poster, against a plain background. The composition strikes a balance between minimalism and impact, typifying the company's powerful image in the global technology industry." | |
# } | |
# ] | |
# } | |
def test_call_dalle3_api(): | |
""" openai==1.2.0, httpx==0.23.0 | |
""" | |
from openai import AzureOpenAI | |
BASE_URL = "https://search-va.byteintl.net/gpt/openapi/online/v2/crawl" | |
DEPLOYMENT_NAME = "dall-e-3" | |
API_KEY = "hpjWvnz7wM2mzDg4Ggnt96xcOjeYcktj" | |
client = AzureOpenAI( | |
api_version="2023-12-01-preview", | |
api_key=API_KEY, | |
azure_endpoint=BASE_URL) | |
result = client.images.generate( | |
model=DEPLOYMENT_NAME, # the name of your DALL-E 3 deployment | |
prompt="A soldier girl holding a USA flag", | |
n=1, | |
size="1024x1024", | |
quality="standard", | |
style="vivid" | |
) | |
image_url = result.data[0].url | |
image_response = requests.get(image_url) | |
# Check if the request was successful | |
if image_response.status_code == 200: | |
# Save the image to a file | |
with open('.jpg', 'wb') as file: | |
file.write(image_response.content) | |
else: | |
print("Failed to download the image.") | |
if __name__ == "__main__": | |
# classifier = EditActionClassifier() | |
# class_name = classifier.infer("Remove the background of the image") | |
# print(class_name) | |
# test_personal_dalle3() | |
# test_call_gpt4_api() | |
# test_call_gpt4v_api() | |
test_call_dalle3_api() | |