Sync from v0.13
This commit is contained in:
93
tests/v1/entrypoints/openai/serving_responses/test_basic.py
Normal file
93
tests/v1/entrypoints/openai/serving_responses/test_basic.py
Normal file
@@ -0,0 +1,93 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
||||
|
||||
import openai # use the official client for correctness check
|
||||
import openai.types.responses as openai_responses_types
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_simple_input(client: openai.AsyncOpenAI):
|
||||
response = await client.responses.create(input="What is 13 * 24?")
|
||||
print(response)
|
||||
|
||||
outputs = response.output
|
||||
# Whether the output contains the answer.
|
||||
assert outputs[-1].type == "message"
|
||||
assert "312" in outputs[-1].content[0].text
|
||||
|
||||
# Whether the output contains the reasoning.
|
||||
assert outputs[0].type == "reasoning"
|
||||
assert outputs[0].content[0].text != ""
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_instructions(client: openai.AsyncOpenAI):
|
||||
response = await client.responses.create(
|
||||
instructions="Finish the answer with QED.",
|
||||
input="What is 13 * 24?",
|
||||
)
|
||||
print(response)
|
||||
|
||||
output_text = response.output[-1].content[0].text
|
||||
assert "312" in output_text
|
||||
assert "QED" in output_text
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_chat(client: openai.AsyncOpenAI):
|
||||
response = await client.responses.create(
|
||||
input=[
|
||||
{"role": "system", "content": "Finish the answer with QED."},
|
||||
{"role": "user", "content": "What is 5 * 3?"},
|
||||
{"role": "assistant", "content": "15. QED."},
|
||||
{"role": "user", "content": "Multiply the result by 2."},
|
||||
],
|
||||
)
|
||||
print(response)
|
||||
|
||||
output_text = response.output[-1].content[0].text
|
||||
assert "30" in output_text
|
||||
assert "QED" in output_text
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_chat_with_input_type(client: openai.AsyncOpenAI):
|
||||
response = await client.responses.create(
|
||||
input=[
|
||||
{
|
||||
"role": "user",
|
||||
"content": [{"type": "input_text", "text": "Hello!"}],
|
||||
},
|
||||
],
|
||||
)
|
||||
print(response)
|
||||
assert response.status == "completed"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_logprobs(client: openai.AsyncOpenAI):
|
||||
response = await client.responses.create(
|
||||
include=["message.output_text.logprobs"],
|
||||
input="What is 13 * 24?",
|
||||
top_logprobs=5,
|
||||
)
|
||||
print(response)
|
||||
outputs = response.output
|
||||
assert outputs[-1].content[-1].logprobs
|
||||
assert len(outputs[-1].content[-1].logprobs[0].top_logprobs) == 5
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_streaming(client: openai.AsyncOpenAI):
|
||||
stream = await client.responses.create(
|
||||
input="What is 13 * 24?",
|
||||
stream=True,
|
||||
)
|
||||
events = [event async for event in stream]
|
||||
assert isinstance(events[0], openai_responses_types.ResponseCreatedEvent)
|
||||
assert any(
|
||||
isinstance(event, openai_responses_types.ResponseTextDeltaEvent)
|
||||
for event in events
|
||||
)
|
||||
assert isinstance(events[-1], openai_responses_types.ResponseCompletedEvent)
|
||||
Reference in New Issue
Block a user