2024-08-09 10:39:41 +08:00
|
|
|
import openai
|
|
|
|
import pytest
|
2024-08-26 21:33:17 -07:00
|
|
|
import pytest_asyncio
|
2024-08-09 10:39:41 +08:00
|
|
|
|
|
|
|
from ...utils import RemoteOpenAIServer
|
|
|
|
|
|
|
|
MODEL_NAME = "facebook/bart-base"
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
|
|
def server():
|
|
|
|
args = [
|
|
|
|
"--dtype",
|
|
|
|
"bfloat16",
|
|
|
|
"--enforce-eager",
|
|
|
|
]
|
|
|
|
|
|
|
|
with RemoteOpenAIServer(MODEL_NAME, args) as remote_server:
|
|
|
|
yield remote_server
|
|
|
|
|
|
|
|
|
2024-08-26 21:33:17 -07:00
|
|
|
@pytest_asyncio.fixture
|
|
|
|
async def client(server):
|
|
|
|
async with server.get_async_client() as async_client:
|
|
|
|
yield async_client
|
2024-08-09 10:39:41 +08:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
|
|
@pytest.mark.parametrize("model_name", [MODEL_NAME])
|
|
|
|
async def test_single_completion(client: openai.AsyncOpenAI, model_name: str):
|
|
|
|
completion = await client.completions.create(model=model_name,
|
|
|
|
prompt="Hello, my name is",
|
|
|
|
max_tokens=5,
|
|
|
|
temperature=0.0)
|
|
|
|
|
|
|
|
assert completion.id is not None
|
|
|
|
assert completion.choices is not None and len(completion.choices) == 1
|
|
|
|
|
|
|
|
choice = completion.choices[0]
|
|
|
|
assert len(choice.text) >= 5
|
|
|
|
assert choice.finish_reason == "length"
|
|
|
|
assert completion.usage == openai.types.CompletionUsage(
|
|
|
|
completion_tokens=5, prompt_tokens=2, total_tokens=7)
|
|
|
|
|
|
|
|
# test using token IDs
|
|
|
|
completion = await client.completions.create(
|
|
|
|
model=model_name,
|
|
|
|
prompt=[0, 0, 0, 0, 0],
|
|
|
|
max_tokens=5,
|
|
|
|
temperature=0.0,
|
|
|
|
)
|
|
|
|
assert len(completion.choices[0].text) >= 1
|