Zenith Wang commited on
Commit
bfe7b82
·
1 Parent(s): 3cf4e55

修复OpenAI客户端初始化问题,支持纯文本输入(图片可选)

Browse files
Files changed (1) hide show
  1. app.py +44 -28
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进行图像分析和文本生成,支持CoT推理展示"""
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
- # 转换图像为base64
46
- try:
47
- base64_image = image_to_base64(image)
48
- if base64_image is None:
49
- yield "❌ 图片处理失败", ""
50
- return
51
- except Exception as e:
52
- yield f"❌ 图片处理错误: {str(e)}", ""
53
- return
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
- client = OpenAI(api_key=STEP_API_KEY, base_url=BASE_URL)
 
 
 
 
 
 
 
 
 
 
 
 
 
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):