Skip to Content
开发指南推理模型最佳实践

推理模型最佳实践

阶跃星辰为开发者提供了两款多模态推理模型 —— step-3step-r1-v-mini,它们具备强大的图像理解和深度思考能力,能够处理复杂的逻辑推理、数学问题、代码生成等任务。

step-3 是一款全新多模态推理模型,能够同时处理图文输入并输出文字回复。具备深度思考自主开展推理过程的能力。即在生成最终输出前完成一段“思考”过程(例如通过 reasoning 字段展示思考信息),提高最终结果的准确性和推理深度。在调用时,开发者无需预设过多的系统提示(sys_prompt),模型可自动发挥内在的深度思考能力。

step-3 模型最佳实践

step-3 作为多模态推理模型,其温度参数 temperature 一般设置为 0.7 并可根据实际需求调整温度。我们推荐将温度设置在 0.1 ~ 1.0 之间。

此外,在使用过程中,我们建议开发者不要设置 max_tokens 参数。因为 step-3 模型会根据问题的复杂度和内容自动调整输出长度,设置 max_tokens 可能会导致无法输出完整的 reasoningcontent。在不设置时,模型的上下文总长为 65536 ,并根据问题的复杂度进行长短不一的思考。

step-3 模型特性

  1. 全能理解:像人脑一样同时”看懂”图片和”理解”文字,比如你能发一张图表图片+一段问题,它会先分析图片里的数据,再结合文字内容综合回答。
  2. 深度思考过程:遇到难题时会先自己”想一想”,比如解数学题时会列出解题步骤、分析问题关键点,这个思考过程还会显示出来,就像你解题时的草稿纸。
  3. 不用复杂指令:不需要你写很多提示词,它自己就能发挥推理能力。比如你说”看看这张地图,告诉我最佳路线”,它就能自动分析地图并规划路径。
  4. 多才多艺:会解数学题、能看懂图表、还能帮你写代码。
  5. 学习能力强:通过海量虚拟训练(比如用合成数据模拟各种场景),让它在处理复杂任务时更可靠,已经在很多专业测试里拿了高分。

核心示例代码

以下使用最简单的代码实现 step-3 模型对图片进行分析。

import time import base64 from openai import OpenAI BASE_URL,STEP_API_KEY = "https://api.stepfun.com/v1", "YOUR_STEPFUN_APIKEY" # 选择模型 COMPLETION_MODEL = "step-3" # 也可替换为 step-r1-v-mini # 用户问题提示 user_prompt = "帮我看看这是什么菜,如何制作?" # 将本地图片转换为 base64 字符串 def image_to_base64(image_path): with open(image_path, "rb") as image_file: encoded_string = base64.b64encode(image_file.read()) return encoded_string.decode('utf-8') # 注意提供准确的图片路径 image_path1 = "./宫保鸡丁.png" bstring1 = image_to_base64(image_path1) # 构造消息,依靠模型自主深度思考 messages = [ {"role": "user", "content": [ {"type": "image_url", "image_url": {"url": f"data:image/jpg;base64,{bstring1}", "detail": "high"}}, {"type": "text", "text": user_prompt} ]} ] time_start = time.time() client = OpenAI(api_key=STEP_API_KEY, base_url=BASE_URL) try: response = client.chat.completions.create( model=COMPLETION_MODEL, messages=messages, stream=True ) except Exception as e: print("请求 API 时发生异常:", e) exit(1) try: for chunk in response: # 你可以在这里获取到补全的内容,并判断是否是 reaonsing 内容。 print(chunk) except Exception as e: print("处理流式结果时发生错误:", e) time_end = time.time() print(f"\n总生成时间: {time_end - time_start:.2f}秒")

输入参数详情可以参考Chat Completion 文档

输出示例

ChatCompletionChunk(id='f41b47b291e690d3659f6d8c01a6b0a8.20f353f807a52a5f3252692a22d49568', choices=[Choice(delta=ChoiceDelta(content='', function_call=None, refusal=None, role='assistant', tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=1744290861, model='step-3', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=0, prompt_tokens=701, total_tokens=701, completion_tokens_details=None, prompt_tokens_details=None), agent='') ChatCompletionChunk(id='f41b47b291e690d3659f6d8c01a6b0a8.20f353f807a52a5f3252692a22d49568', choices=[Choice(delta=ChoiceDelta(content='', function_call=None, refusal=None, role='assistant', tool_calls=None, reasoning='\n'), finish_reason=None, index=0, logprobs=None)], created=1744290861, model='step-3', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=1, prompt_tokens=701, total_tokens=702, completion_tokens_details=None, prompt_tokens_details=None), agent='') ChatCompletionChunk(id='f41b47b291e690d3659f6d8c01a6b0a8.20f353f807a52a5f3252692a22d49568', choices=[Choice(delta=ChoiceDelta(content='', function_call=None, refusal=None, role='assistant', tool_calls=None, reasoning='好的'), finish_reason=None, index=0, logprobs=None)], created=1744290861, model='step-3', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=2, prompt_tokens=701, total_tokens=703, completion_tokens_details=None, prompt_tokens_details=None), agent='') 。。。 ChatCompletionChunk(id='f41b47b291e690d3659f6d8c01a6b0a8.20f353f807a52a5f3252692a22d49568', choices=[Choice(delta=ChoiceDelta(content='!', function_call=None, refusal=None, role='assistant', tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=1744290861, model='step-3', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=1031, prompt_tokens=701, total_tokens=1732, completion_tokens_details=None, prompt_tokens_details=None), agent='') ChatCompletionChunk(id='f41b47b291e690d3659f6d8c01a6b0a8.20f353f807a52a5f3252692a22d49568', choices=[Choice(delta=ChoiceDelta(content='', function_call=None, refusal=None, role='assistant', tool_calls=None), finish_reason='stop', index=0, logprobs=None)], created=1744290861, model='step-3', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=1032, prompt_tokens=701, total_tokens=1733, completion_tokens_details=None, prompt_tokens_details=None), agent='')

响应体字段说明请参考文档

获取 Reasoning 内容

阶跃星辰的推理大模型在处理复杂问题时,会在输出中包含 reasoning 字段,展示模型的思考过程。开发者可以通过判断该字段是否存在来获取模型的思考信息。

if chunk.choices[0].delta.reasoning: reasoning = chunk.choices[0].delta.reasoning print("模型思考过程:", reasoning)

对于非流式场景可以直接提取 reasoning 字段,获取模型的思考过程。

msg = completion.choices[0].message.content reasoning = completion.choices[0].message.reasoning

通过 reasoning_content 字段,获取模型的思考过程。

如果你目前使用的推理模型中已经使用 reasoning_content 字段,可以继续使用该字段。阶跃星辰的推理模型也支持这一字段,开发者可以根据自己的需求选择使用。

只需要在请求时传入 reasoning_format="deepseek-style" 即可。(如使用 OpenAI SDK,则需要通过 extra_body 字段传入)

注意事项

  • 深度思考优势:模型在接收到图片及文字提示后,会首先经过内部思考(reasoning)再输出最终结果。这一过程有助于完成复杂的关联和因果推理,但可能会使响应时间略有延迟,应据此考虑超时设置。
  • JSON 模式与联网搜索限制:当前版本暂时不支持 JSON mode 以及联网搜索功能,后续版本会逐步补齐这些功能。开发者在使用过程中请以当前能力为准,确保设计逻辑不依赖联网检索结果。
  • 图片数据格式:确保传入的图片数据使用正确的 Base64 编码格式,并按照 API 要求指定图片类型(如 JPG/JPEG、PNG、静态GIF、WebP等)和细节参数,保证推理的准确性。详见文档
  • 错误处理与日志记录:在输出时已加入Trace ID,若遇到模型推理问题,可将此ID反馈给我们。
Last updated on