
from openai import OpenAI
client = OpenAI(
base_url='https://ms-ens-d8814b5f-527a.api-inference.modelscope.cn/v1',
api_key='xxxx', # ModelScope Token
)
response = client.chat.completions.create(
model='xiangxinai/OpenGuardrails-Text-2510', # ModelScope Model-Id
messages=[
{
'role': 'system',
'content': 'You are a helpful assistant.'
},
{
'role': 'user',
'content': '你好?'
}
],
stream=True
)
for chunk in response:
if chunk.choices:
print(chunk.choices[0].delta.content, end='', flush=True)
(venv) root@deepseek:~/src/openguardrails/code_analysis_docs# python text_model_test.py
Traceback (most recent call last):
File "/root/src/openguardrails/code_analysis_docs/text_model_test.py", line 8, in <module>
response = client.chat.completions.create(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/src/openguardrails/code_analysis_docs/venv/lib/python3.12/site-packages/openai/_utils/_utils.py", line 286, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/root/src/openguardrails/code_analysis_docs/venv/lib/python3.12/site-packages/openai/resources/chat/completions/completions.py", line 1192, in create
return self._post(
^^^^^^^^^^^
File "/root/src/openguardrails/code_analysis_docs/venv/lib/python3.12/site-packages/openai/_base_client.py", line 1259, in post
return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/src/openguardrails/code_analysis_docs/venv/lib/python3.12/site-packages/openai/_base_client.py", line 1047, in request
raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'error': {'code': 400, 'message': 'Conversation roles must alternate user/assistant/user/assistant/... Conversation roles must alternate user/assistant/user/assistant/...', 'param': None, 'type': 'BadRequestError'}, 'request_id': 'ab3095c0-9a43-4bcd-bd34-f34c8b1c1f5d'}
#!/usr/bin/env python3
"""简单测试 ModelScope API 的消息格式要求"""
from openai import OpenAI
import httpx
TIMEOUT=60.0 # HTTP超时
print("=" * 60)
print("ModelScope API 测试")
print("=" * 60)
print()
# 创建带超时设置的客户端
client = OpenAI(
base_url='https://ms-ens-d8814b5f-527a.api-inference.modelscope.cn/v1',
api_key='xxxx',
timeout=TIMEOUT,
http_client=httpx.Client(timeout=TIMEOUT) # 使用 httpx 客户端设置超时
)
print("测试1: 简单 user 消息")
print("-" * 60)
try:
response = client.chat.completions.create(
model='xiangxinai/OpenGuardrails-Text-2510',
messages=[{"role": "user", "content": "你好"}],
stream=False
)
print(f"✓ 成功")
print(f" 响应: {response.choices[0].message.content[:100]}")
except Exception as e:
print(f"✗ 失败: {type(e).__name__}")
if "504" in str(e):
print(" 原因: 网关超时,可能是服务正在启动或负载过高")
else:
print(f" 详情: {str(e)[:200]}")
print("\n测试2: user -> assistant -> user 交替")
print("-" * 60)
try:
response = client.chat.completions.create(
model='xiangxinai/OpenGuardrails-Text-2510',
messages=[
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!有什么可以帮助你的吗?"},
{"role": "user", "content": "介绍一下你自己"}
],
stream=False
)
print(f"✓ 成功")
print(f" 响应: {response.choices[0].message.content[:100]}")
except Exception as e:
print(f"✗ 失败: {type(e).__name__}")
if "504" in str(e):
print(" 原因: 网关超时,可能是服务正在启动或负载过高")
else:
print(f" 详情: {str(e)[:200]}")
print("\n测试3: system -> user (预期失败)")
print("-" * 60)
try:
response = client.chat.completions.create(
model='xiangxinai/OpenGuardrails-Text-2510',
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你好"}
],
stream=False
)
print(f"✓ 意外成功: {response.choices[0].message.content[:100]}")
except Exception as e:
print(f"✓ 预期失败: {type(e).__name__}")
if "400" in str(e):
print(" 原因: ModelScope API 不支持 system 角色")
else:
print(f" 详情: {str(e)[:200]}")
print("\n" + "=" * 60)
print("测试完成")
print("=" * 60)
(venv) root@deepseek:~/src/openguardrails/code_analysis_docs# python3 test_simple.py
============================================================
ModelScope API 测试
============================================================
测试1: 简单 user 消息
------------------------------------------------------------
✗ 失败: APITimeoutError
详情: Request timed out.
测试2: user -> assistant -> user 交替
------------------------------------------------------------
✗ 失败: APITimeoutError
详情: Request timed out.
测试3: system -> user (预期失败)
------------------------------------------------------------
✓ 预期失败: BadRequestError
原因: ModelScope API 不支持 system 角色
============================================================
测试完成
============================================================
ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!欢迎加入技术交流群:微信公众号:魔搭ModelScope社区,钉钉群号:44837352