Spaces:
Runtime error
Runtime error
import logging | |
from .base_model import BaseLLMModel | |
from .. import shared | |
import requests | |
from ..presets import * | |
from ..config import retrieve_proxy, sensitive_id | |
class OpenAI_DALLE3_Client(BaseLLMModel): | |
def __init__(self, model_name, api_key, user_name="") -> None: | |
super().__init__(model_name=model_name, user=user_name) | |
self.api_key = api_key | |
self._refresh_header() | |
def _get_dalle3_prompt(self): | |
prompt = self.history[-1]["content"] | |
if prompt.endswith("--raw"): | |
prompt = "I NEED to test how the tool works with extremely simple prompts. DO NOT add any detail, just use it AS-IS:" + prompt | |
return prompt | |
def get_answer_at_once(self, stream=False): | |
prompt = self._get_dalle3_prompt() | |
headers = { | |
"Content-Type": "application/json", | |
"Authorization": f"Bearer {self.api_key}" | |
} | |
payload = { | |
"model": "dall-e-3", | |
"prompt": prompt, | |
"n": 1, | |
"size": "1024x1024", | |
"quality": "standard", | |
} | |
if stream: | |
timeout = TIMEOUT_STREAMING | |
else: | |
timeout = TIMEOUT_ALL | |
if shared.state.images_completion_url != IMAGES_COMPLETION_URL: | |
logging.debug(f"使用自定义API URL: {shared.state.images_completion_url}") | |
with retrieve_proxy(): | |
try: | |
response = requests.post( | |
shared.state.images_completion_url, | |
headers=headers, | |
json=payload, | |
stream=stream, | |
timeout=timeout, | |
) | |
response.raise_for_status() # 根据HTTP状态码引发异常 | |
response_data = response.json() | |
image_url = response_data['data'][0]['url'] | |
img_tag = f'<!-- S O PREFIX --><a data-fancybox="gallery" target="_blank" href="{image_url}"><img src="{image_url}" /></a><!-- E O PREFIX -->' | |
revised_prompt = response_data['data'][0].get('revised_prompt', '') | |
return img_tag + revised_prompt, 0 | |
except requests.exceptions.RequestException as e: | |
return str(e), 0 | |
def _refresh_header(self): | |
self.headers = { | |
"Content-Type": "application/json", | |
"Authorization": f"Bearer {sensitive_id}", | |
} |