小佬初来,尝试公益站,有点疑惑,
- 内容介绍
- 文章标签
- 相关推荐
用了one API, 这个显示公益站api KEY是管用的把?
image1714×245 29.1 KB
然后在自己的python上调用,
image504×350 9.69 KB
image479×350 17.1 KB
image801×149 8.65 KB
跑起来就500,是哪里出了问题呢
def test_ai_connection(self, config: AIConfig) → tuple[bool, str]:
try:
if config.ai_type == “ollama”:
resp = requests.get(f"{config.base_url}/api/tags", timeout=5)
if resp.status_code == 200:
return True, “”
else:
return False, f"HTTP {resp.status_code}"
else:
url = config.base_url.rstrip(‘/’)
if not url.endswith(‘/v1’):
url += ‘/v1’
headers = {“Content-Type”: “application/json”}
if config.api_key:
headers[“Authorization”] = f"Bearer {config.api_key}"
try:
resp = requests.get(f"{url}/models", headers=headers, timeout=10)
if resp.status_code == 200:
return True, “”
except:
pass
test_payload = {
“model”: config.model_name,
“messages”: [{“role”: “user”, “content”: “Hello”}],
“max_tokens”: 5
}
resp = requests.post(f"{url}/chat/completions", json=test_payload, headers=headers, timeout=10)
if resp.status_code == 200:
return True, “”
else:
return False, f"API 响应 {resp.status_code}: {resp.text[:100]}"
except Exception as e:
return False, str(e)
def test_current_connection(self):
ok, msg = self.test_ai_connection(self.ai_config)
if ok:
self.status_bar.showMessage(f"AI 连接测试成功: {self.current_preset_name}", 3000)
else:
self.status_bar.showMessage(f"AI 连接测试失败: {msg}", 5000)
def refresh_preset_combo(self):
if hasattr(self, 'preset_combo'):
self.preset_combo.blockSignals(True)
self.preset_combo.clear()
self.preset_combo.addItems(list(self.ai_presets.keys()))
self.preset_combo.setCurrentText(self.current_preset_name)
self.preset_combo.blockSignals(False)
def on_preset_combo_changed(self, index):
if index < 0:
return
new_name = self.preset_combo.currentText()
if new_name != self.current_preset_name and new_name in self.ai_presets:
self.current_preset_name = new_name
self.ai_config = self.ai_presets[self.current_preset_name]
self.save_data()
self.status_bar.showMessage(f"切换到 AI 预设: {new_name}")
QTimer.singleShot(100, lambda: self.test_current_connection())
def show_ai_settings(self):
dialog = QDialog(self)
dialog.setWindowTitle("AI 设置")
dialog.setMinimumWidth(500)
layout = QVBoxLayout(dialog)
# 预设管理
preset_layout = QHBoxLayout()
preset_layout.addWidget(QLabel("预设配置:"))
self.preset_combo_dlg = QComboBox()
self.preset_combo_dlg.setEditable(True)
self.preset_combo_dlg.addItems(list(self.ai_presets.keys()))
self.preset_combo_dlg.setCurrentText(self.current_preset_name)
preset_layout.addWidget(self.preset_combo_dlg)
btn_save_preset = QPushButton("保存")
btn_delete_preset = QPushButton("删除")
preset_layout.addWidget(btn_save_preset)
preset_layout.addWidget(btn_delete_preset)
layout.addLayout(preset_layout)
# AI 类型
type_group = QGroupBox("AI 类型")
type_layout = QHBoxLayout()
self.radio_ollama = QRadioButton("Ollama (本地)")
self.radio_generic = QRadioButton("通用 API (OpenAI 兼容)")
type_layout.addWidget(self.radio_ollama)
type_layout.addWidget(self.radio_generic)
type_group.setLayout(type_layout)
layout.addWidget(type_group)
# 通用 API 设置
self.generic_group = QGroupBox("通用 API 设置")
generic_form = QFormLayout()
self.generic_base_url = QLineEdit()
self.generic_base_url.setPlaceholderText("例如: https://api.openai.com/v1")
self.generic_api_key = QLineEdit()
self.generic_api_key.setPlaceholderText("API Key (可选)")
self.generic_api_key.setEchoMode(QLineEdit.EchoMode.Password)
self.generic_model = QLineEdit()
self.generic_model.setPlaceholderText("模型名称,如: gpt-4-vision-preview")
generic_form.addRow("Base URL:", self.generic_base_url)
generic_form.addRow("API Key:", self.generic_api_key)
generic_form.addRow("模型名称:", self.generic_model)
self.generic_group.setLayout(generic_form)
layout.addWidget(self.generic_group)
网友解答:
--【壹】--: Chambo Wu:
l是不被支持的,看看你的
所以应该是模型没选对的问题对吗,佬
--【贰】--:
尝试过了,包括不加V1,都是调用失败500
--【叁】--:
那我不知道了,看看公益站的这个模型还活着吗
--【肆】--:
还是不行,是one API哪里配置的不对吗
--【伍】--:
那响应体选的是responses咩,现在的gpt不是用completed了
--【陆】--:
503是权限异常,确实可能是模型id写的不对,最好从网站直接复制
--【柒】--:
请求地址后面v1 然后不要带斜杠
--【捌】--:
我一般都会先去公益站的操练场,先试试哪个模型可以 。这也是排查问题的思路:隔离变化,一段一段的排查~
--【玖】--:
厉害,跟帖学习
--【拾】--:
image496×355 8.66 KB
image490×175 7.8 KB
直连公益站,开始报503, 模型选的不对吗是?谢谢佬
--【拾壹】--:
还有注意一下公益站令牌创建那里,有可能有模型分组,搞错了也会提示权限问题
--【拾贰】--:
诶模型名称这样写不对吧,看看 qq 佬站内的模型名称是咋填的,至少是都是小写的吧
--【拾叁】--:
错误弹窗中’\u003c’ 就是字符 <,通常说明返回的是HTML错误页,大概率问题是
1、渠道 base_url 配错
2、请求被反代/CDN/WAF拦截
3、上游返回了404/403/502的HTML页面
4、API key 或请求头有问题,返回了登录页/错误页
5、你填的是网页地址,不是API地址
先用cherrystduio之类的可以直连你的公益站api来确认模型正常,之后再试one api接口是否可以使用,有些公益站避免被二次分发会做一些技术处理
--【拾肆】--:
@542224248 image_url是不被支持的,看看你的请求json里面,deepseek应该只支持text
--【拾伍】--:
太对了,我又换了一个MINIMAX ,终于连上。。。虽然目的没达到,但是公益站操作学会了,谢谢佬
image281×160 6.32 KB
--【拾陆】--:
你调用的这个模型API不支持图片/图像输入,只支持纯文本消息。你测试的时候发送了image_url所以返回来400,说明不支持
--【拾柒】--:
image590×150 7.76 KB
6啊佬,点到了问题,调整了,又报400 ,
用了one API, 这个显示公益站api KEY是管用的把?
image1714×245 29.1 KB
然后在自己的python上调用,
image504×350 9.69 KB
image479×350 17.1 KB
image801×149 8.65 KB
跑起来就500,是哪里出了问题呢
def test_ai_connection(self, config: AIConfig) → tuple[bool, str]:
try:
if config.ai_type == “ollama”:
resp = requests.get(f"{config.base_url}/api/tags", timeout=5)
if resp.status_code == 200:
return True, “”
else:
return False, f"HTTP {resp.status_code}"
else:
url = config.base_url.rstrip(‘/’)
if not url.endswith(‘/v1’):
url += ‘/v1’
headers = {“Content-Type”: “application/json”}
if config.api_key:
headers[“Authorization”] = f"Bearer {config.api_key}"
try:
resp = requests.get(f"{url}/models", headers=headers, timeout=10)
if resp.status_code == 200:
return True, “”
except:
pass
test_payload = {
“model”: config.model_name,
“messages”: [{“role”: “user”, “content”: “Hello”}],
“max_tokens”: 5
}
resp = requests.post(f"{url}/chat/completions", json=test_payload, headers=headers, timeout=10)
if resp.status_code == 200:
return True, “”
else:
return False, f"API 响应 {resp.status_code}: {resp.text[:100]}"
except Exception as e:
return False, str(e)
def test_current_connection(self):
ok, msg = self.test_ai_connection(self.ai_config)
if ok:
self.status_bar.showMessage(f"AI 连接测试成功: {self.current_preset_name}", 3000)
else:
self.status_bar.showMessage(f"AI 连接测试失败: {msg}", 5000)
def refresh_preset_combo(self):
if hasattr(self, 'preset_combo'):
self.preset_combo.blockSignals(True)
self.preset_combo.clear()
self.preset_combo.addItems(list(self.ai_presets.keys()))
self.preset_combo.setCurrentText(self.current_preset_name)
self.preset_combo.blockSignals(False)
def on_preset_combo_changed(self, index):
if index < 0:
return
new_name = self.preset_combo.currentText()
if new_name != self.current_preset_name and new_name in self.ai_presets:
self.current_preset_name = new_name
self.ai_config = self.ai_presets[self.current_preset_name]
self.save_data()
self.status_bar.showMessage(f"切换到 AI 预设: {new_name}")
QTimer.singleShot(100, lambda: self.test_current_connection())
def show_ai_settings(self):
dialog = QDialog(self)
dialog.setWindowTitle("AI 设置")
dialog.setMinimumWidth(500)
layout = QVBoxLayout(dialog)
# 预设管理
preset_layout = QHBoxLayout()
preset_layout.addWidget(QLabel("预设配置:"))
self.preset_combo_dlg = QComboBox()
self.preset_combo_dlg.setEditable(True)
self.preset_combo_dlg.addItems(list(self.ai_presets.keys()))
self.preset_combo_dlg.setCurrentText(self.current_preset_name)
preset_layout.addWidget(self.preset_combo_dlg)
btn_save_preset = QPushButton("保存")
btn_delete_preset = QPushButton("删除")
preset_layout.addWidget(btn_save_preset)
preset_layout.addWidget(btn_delete_preset)
layout.addLayout(preset_layout)
# AI 类型
type_group = QGroupBox("AI 类型")
type_layout = QHBoxLayout()
self.radio_ollama = QRadioButton("Ollama (本地)")
self.radio_generic = QRadioButton("通用 API (OpenAI 兼容)")
type_layout.addWidget(self.radio_ollama)
type_layout.addWidget(self.radio_generic)
type_group.setLayout(type_layout)
layout.addWidget(type_group)
# 通用 API 设置
self.generic_group = QGroupBox("通用 API 设置")
generic_form = QFormLayout()
self.generic_base_url = QLineEdit()
self.generic_base_url.setPlaceholderText("例如: https://api.openai.com/v1")
self.generic_api_key = QLineEdit()
self.generic_api_key.setPlaceholderText("API Key (可选)")
self.generic_api_key.setEchoMode(QLineEdit.EchoMode.Password)
self.generic_model = QLineEdit()
self.generic_model.setPlaceholderText("模型名称,如: gpt-4-vision-preview")
generic_form.addRow("Base URL:", self.generic_base_url)
generic_form.addRow("API Key:", self.generic_api_key)
generic_form.addRow("模型名称:", self.generic_model)
self.generic_group.setLayout(generic_form)
layout.addWidget(self.generic_group)
网友解答:
--【壹】--: Chambo Wu:
l是不被支持的,看看你的
所以应该是模型没选对的问题对吗,佬
--【贰】--:
尝试过了,包括不加V1,都是调用失败500
--【叁】--:
那我不知道了,看看公益站的这个模型还活着吗
--【肆】--:
还是不行,是one API哪里配置的不对吗
--【伍】--:
那响应体选的是responses咩,现在的gpt不是用completed了
--【陆】--:
503是权限异常,确实可能是模型id写的不对,最好从网站直接复制
--【柒】--:
请求地址后面v1 然后不要带斜杠
--【捌】--:
我一般都会先去公益站的操练场,先试试哪个模型可以 。这也是排查问题的思路:隔离变化,一段一段的排查~
--【玖】--:
厉害,跟帖学习
--【拾】--:
image496×355 8.66 KB
image490×175 7.8 KB
直连公益站,开始报503, 模型选的不对吗是?谢谢佬
--【拾壹】--:
还有注意一下公益站令牌创建那里,有可能有模型分组,搞错了也会提示权限问题
--【拾贰】--:
诶模型名称这样写不对吧,看看 qq 佬站内的模型名称是咋填的,至少是都是小写的吧
--【拾叁】--:
错误弹窗中’\u003c’ 就是字符 <,通常说明返回的是HTML错误页,大概率问题是
1、渠道 base_url 配错
2、请求被反代/CDN/WAF拦截
3、上游返回了404/403/502的HTML页面
4、API key 或请求头有问题,返回了登录页/错误页
5、你填的是网页地址,不是API地址
先用cherrystduio之类的可以直连你的公益站api来确认模型正常,之后再试one api接口是否可以使用,有些公益站避免被二次分发会做一些技术处理
--【拾肆】--:
@542224248 image_url是不被支持的,看看你的请求json里面,deepseek应该只支持text
--【拾伍】--:
太对了,我又换了一个MINIMAX ,终于连上。。。虽然目的没达到,但是公益站操作学会了,谢谢佬
image281×160 6.32 KB
--【拾陆】--:
你调用的这个模型API不支持图片/图像输入,只支持纯文本消息。你测试的时候发送了image_url所以返回来400,说明不支持
--【拾柒】--:
image590×150 7.76 KB
6啊佬,点到了问题,调整了,又报400 ,

