Spaces:
Build error
Build error
Zenith Wang
commited on
Commit
·
bfe7b82
1
Parent(s):
3cf4e55
修复OpenAI客户端初始化问题,支持纯文本输入(图片可选)
Browse files
app.py
CHANGED
|
@@ -28,35 +28,26 @@ def image_to_base64(image):
|
|
| 28 |
return None
|
| 29 |
|
| 30 |
def call_step_api(image, prompt, model, temperature=0.7, max_tokens=2000):
|
| 31 |
-
"""调用Step API
|
| 32 |
-
|
| 33 |
-
if image is None:
|
| 34 |
-
yield "❌ 请先上传一张图片", ""
|
| 35 |
-
return
|
| 36 |
|
| 37 |
if not prompt:
|
| 38 |
-
yield "
|
| 39 |
return
|
| 40 |
|
| 41 |
if not STEP_API_KEY:
|
| 42 |
-
yield "❌ API密钥未配置。请在 Hugging Face Space 的 Settings 中添加 STEP_API_KEY 环境变量。"
|
| 43 |
return
|
| 44 |
|
| 45 |
-
#
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
# 构造消息
|
| 56 |
-
messages = [
|
| 57 |
-
{
|
| 58 |
-
"role": "user",
|
| 59 |
-
"content": [
|
| 60 |
{
|
| 61 |
"type": "image_url",
|
| 62 |
"image_url": {
|
|
@@ -69,14 +60,39 @@ def call_step_api(image, prompt, model, temperature=0.7, max_tokens=2000):
|
|
| 69 |
"text": prompt
|
| 70 |
}
|
| 71 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
}
|
| 73 |
]
|
| 74 |
|
| 75 |
-
# 创建OpenAI客户端
|
| 76 |
try:
|
| 77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 78 |
except Exception as e:
|
| 79 |
-
yield f"❌ 客户端初始化失败: {str(e)}"
|
| 80 |
return
|
| 81 |
|
| 82 |
try:
|
|
@@ -162,16 +178,16 @@ with gr.Blocks(title="Step-3", theme=gr.themes.Soft()) as demo:
|
|
| 162 |
with gr.Column(scale=1):
|
| 163 |
# 输入区域
|
| 164 |
image_input = gr.Image(
|
| 165 |
-
label="
|
| 166 |
type="pil",
|
| 167 |
height=300
|
| 168 |
)
|
| 169 |
|
| 170 |
prompt_input = gr.Textbox(
|
| 171 |
label="提示词",
|
| 172 |
-
placeholder="
|
| 173 |
lines=3,
|
| 174 |
-
value="
|
| 175 |
)
|
| 176 |
|
| 177 |
with gr.Accordion("高级设置", open=False):
|
|
|
|
| 28 |
return None
|
| 29 |
|
| 30 |
def call_step_api(image, prompt, model, temperature=0.7, max_tokens=2000):
|
| 31 |
+
"""调用Step API进行分析,支持纯文本和图像+文本"""
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
|
| 33 |
if not prompt:
|
| 34 |
+
yield "", "❌ 请输入提示词"
|
| 35 |
return
|
| 36 |
|
| 37 |
if not STEP_API_KEY:
|
| 38 |
+
yield "", "❌ API密钥未配置。请在 Hugging Face Space 的 Settings 中添加 STEP_API_KEY 环境变量。"
|
| 39 |
return
|
| 40 |
|
| 41 |
+
# 构造消息内容
|
| 42 |
+
if image is not None:
|
| 43 |
+
# 有图片的情况
|
| 44 |
+
try:
|
| 45 |
+
base64_image = image_to_base64(image)
|
| 46 |
+
if base64_image is None:
|
| 47 |
+
yield "", "❌ 图片处理失败"
|
| 48 |
+
return
|
| 49 |
+
|
| 50 |
+
message_content = [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
{
|
| 52 |
"type": "image_url",
|
| 53 |
"image_url": {
|
|
|
|
| 60 |
"text": prompt
|
| 61 |
}
|
| 62 |
]
|
| 63 |
+
except Exception as e:
|
| 64 |
+
yield "", f"❌ 图片处理错误: {str(e)}"
|
| 65 |
+
return
|
| 66 |
+
else:
|
| 67 |
+
# 纯文本的情况
|
| 68 |
+
message_content = prompt
|
| 69 |
+
|
| 70 |
+
# 构造消息
|
| 71 |
+
messages = [
|
| 72 |
+
{
|
| 73 |
+
"role": "user",
|
| 74 |
+
"content": message_content
|
| 75 |
}
|
| 76 |
]
|
| 77 |
|
| 78 |
+
# 创建OpenAI客户端 - 修复初始化问题
|
| 79 |
try:
|
| 80 |
+
# 设置环境变量方式,避免直接传递参数
|
| 81 |
+
os.environ['OPENAI_API_KEY'] = STEP_API_KEY
|
| 82 |
+
os.environ['OPENAI_BASE_URL'] = BASE_URL
|
| 83 |
+
client = OpenAI(
|
| 84 |
+
api_key=STEP_API_KEY,
|
| 85 |
+
base_url=BASE_URL
|
| 86 |
+
)
|
| 87 |
+
except TypeError:
|
| 88 |
+
# 如果上面的方式失败,尝试只用必要参数
|
| 89 |
+
try:
|
| 90 |
+
client = OpenAI()
|
| 91 |
+
except Exception as e:
|
| 92 |
+
yield "", f"❌ 客户端初始化失败: {str(e)}"
|
| 93 |
+
return
|
| 94 |
except Exception as e:
|
| 95 |
+
yield "", f"❌ 客户端初始化失败: {str(e)}"
|
| 96 |
return
|
| 97 |
|
| 98 |
try:
|
|
|
|
| 178 |
with gr.Column(scale=1):
|
| 179 |
# 输入区域
|
| 180 |
image_input = gr.Image(
|
| 181 |
+
label="上传图片(可选)",
|
| 182 |
type="pil",
|
| 183 |
height=300
|
| 184 |
)
|
| 185 |
|
| 186 |
prompt_input = gr.Textbox(
|
| 187 |
label="提示词",
|
| 188 |
+
placeholder="输入你的问题或描述...",
|
| 189 |
lines=3,
|
| 190 |
+
value=""
|
| 191 |
)
|
| 192 |
|
| 193 |
with gr.Accordion("高级设置", open=False):
|