Files
modelscope--ms-swift/examples/infer/demo_vllm_reasoning_parser.py
wehub-resource-sync a203934033
Lint test / lint (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:34:58 +08:00

86 lines
2.6 KiB
Python

"""
Example of using reasoning_parser
This example demonstrates how to use reasoning_parser in Swift's VllmEngine to support reasoning models.
"""
from swift.infer_engine import InferRequest, RequestConfig, VllmEngine
def main(engine: VllmEngine):
# Create inference request
infer_request = InferRequest(messages=[{'role': 'user', 'content': '9.11 and 9.8, which is greater?'}])
# Configure request parameters
request_config = RequestConfig(
max_tokens=8192,
temperature=0.7,
stream=False # Non-streaming inference
)
# Execute inference
responses = engine.infer(infer_requests=[infer_request], request_config=request_config)
# Process responses
for response in responses:
if hasattr(response, 'choices') and response.choices:
choice = response.choices[0]
message = choice.message
print('=== Reasoning Content ===')
if message.reasoning_content:
print(f'Reasoning steps: {message.reasoning_content}')
else:
print('No reasoning content detected')
print('\n=== Final Answer ===')
print(f'Answer: {message.content}')
print('\n=== Finish Reason ===')
print(f'Reason: {choice.finish_reason}')
def streaming_example(engine: VllmEngine):
"""Streaming inference example"""
infer_request = InferRequest(messages=[{'role': 'user', 'content': 'Calculate the result of 15 + 27'}])
request_config = RequestConfig(
max_tokens=8192,
temperature=0.7,
stream=True # Enable streaming inference
)
# Streaming inference
responses = engine.infer(infer_requests=[infer_request], request_config=request_config)
print('=== Streaming Inference Results ===')
for chunk in responses[0]: # responses[0] is the streaming generator
if chunk and chunk.choices:
choice = chunk.choices[0]
delta = choice.delta
if delta.reasoning_content:
print(f'Reasoning: {delta.reasoning_content}', end='', flush=True)
if delta.content:
print(f'Content: {delta.content}', end='', flush=True)
print('\n=== Inference Complete ===')
if __name__ == '__main__':
# Initialize VllmEngine with reasoning_parser enabled
engine = VllmEngine(
model_id_or_path='Qwen/Qwen3-8B',
reasoning_parser='qwen3', # Specify reasoning parser
gpu_memory_utilization=0.9,
)
print('=== Non-streaming Inference Example ===')
main(engine)
print('\n' + '=' * 50 + '\n')
print('=== Streaming Inference Example ===')
streaming_example(engine)