import os
from openai import OpenAI
client = OpenAI(api_key=os.environ['HEIHUZI_API_KEY'], base_url='https://code.heihuzi.ai/v1', timeout=120.0, max_retries=0)
history = [{'role': 'user', 'content': 'Remember the code MAPLE-731. Reply READY.'}]
first = client.responses.create(model='deepseek-flash', input=history, max_output_tokens=1024)
assert first.status == 'completed' and first.output_text.strip() == 'READY'
history.extend((item.model_dump(exclude_none=True) for item in first.output))
history.append({'role': 'user', 'content': 'What code did I give you? Reply with the code only.'})
second = client.responses.create(model='deepseek-flash', input=history, max_output_tokens=1024)
assert second.status == 'completed' and second.output_text.strip() == 'MAPLE-731'
print(first.output_text, second.output_text)
print('store', getattr(second, 'store', None))
DeepSeek
DeepSeek Responses
普通响应、无状态多轮上下文和 SSE 完成处理。
POST
/
v1
/
responses
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ['HEIHUZI_API_KEY'], base_url='https://code.heihuzi.ai/v1', timeout=120.0, max_retries=0)
history = [{'role': 'user', 'content': 'Remember the code MAPLE-731. Reply READY.'}]
first = client.responses.create(model='deepseek-flash', input=history, max_output_tokens=1024)
assert first.status == 'completed' and first.output_text.strip() == 'READY'
history.extend((item.model_dump(exclude_none=True) for item in first.output))
history.append({'role': 'user', 'content': 'What code did I give you? Reply with the code only.'})
second = client.responses.create(model='deepseek-flash', input=history, max_output_tokens=1024)
assert second.status == 'completed' and second.output_text.strip() == 'MAPLE-731'
print(first.output_text, second.output_text)
print('store', getattr(second, 'store', None))
调用
多轮使用完整历史回传;下面仅描述这个通过实测的方式。官方 Responses 格式参考
POST https://code.heihuzi.ai/v1/responses。实测日期:2026-09-19。OpenAI SDK 的 Base URL 为 https://code.heihuzi.ai/v1。
请求参数
string
required
填写
deepseek-flash。本页所有公开请求组合均使用此模型。string | object[]
required
单轮可传字符串,多轮传完整消息及输出条目。工具回传使用
function_call_output,图片使用 input_image。integer
成功示例使用
1024。Flash 另以 32 验证长输出截断,状态为 incomplete、原因为 max_output_tokens,输出 token 为 32。boolean
开启后读取 SSE,必须看到
response.completed;response.incomplete 和 response.failed 应按未完成处理。普通调用与多轮上下文
下面完整脚本已重新通过真实调用,两次请求依次返回READY 和 MAPLE-731。第二轮显式回传第一轮输出;末尾的可选字段读取也已随完整脚本执行通过。
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ['HEIHUZI_API_KEY'], base_url='https://code.heihuzi.ai/v1', timeout=120.0, max_retries=0)
history = [{'role': 'user', 'content': 'Remember the code MAPLE-731. Reply READY.'}]
first = client.responses.create(model='deepseek-flash', input=history, max_output_tokens=1024)
assert first.status == 'completed' and first.output_text.strip() == 'READY'
history.extend((item.model_dump(exclude_none=True) for item in first.output))
history.append({'role': 'user', 'content': 'What code did I give you? Reply with the code only.'})
second = client.responses.create(model='deepseek-flash', input=history, max_output_tokens=1024)
assert second.status == 'completed' and second.output_text.strip() == 'MAPLE-731'
print(first.output_text, second.output_text)
print('store', getattr(second, 'store', None))
流式输出
本次收到response.output_text.delta 和 response.completed,最终答案为 42;没有 data: [DONE]。思考摘要使用 response.reasoning_summary_text.delta / .done,与官方示例列出的事件名称有差异。
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ['HEIHUZI_API_KEY'], base_url='https://code.heihuzi.ai/v1', timeout=120.0, max_retries=0)
events = client.responses.create(model='deepseek-flash', input='What is 19 + 23? Reply with the number only.', max_output_tokens=1024, stream=True)
(answer, completed) = ('', False)
for event in events:
if event.type == 'response.output_text.delta':
answer += event.delta
elif event.type == 'response.completed':
assert event.response.status == 'completed'
completed = True
print('usage', event.response.usage)
elif event.type in ('response.failed', 'response.incomplete', 'error'):
raise RuntimeError(event.model_dump_json())
print(answer)
assert completed and answer.strip() == '42'
返回字段
本次原始非流式响应包含id、model、object、output、status、usage。SDK 的 output_text 是提取正文的便捷属性。store、reasoning、input_tokens_details、output_tokens_details 等可选字段可能缺失;不要不加判断地访问嵌套属性。
工具调用和图片理解各有完整实测示例。本页只列出上述已通过的组合。