import asyncio
from openai import OpenAI, AsyncOpenAI
from promptlayer import evaluate, aevaluate, contains_scorer
client = OpenAI()
async_client = AsyncOpenAI()
def run_llm(user_message: str) -> str:
completion = client.chat.completions.create(
model="gpt-5.6",
messages=[
{"role": "system", "content": "Answer in one short sentence."},
{"role": "user", "content": str(user_message)},
],
)
return completion.choices[0].message.content or ""
async def run_llm_async(user_message: str) -> str:
completion = await async_client.chat.completions.create(
model="gpt-5.6",
messages=[
{"role": "system", "content": "Answer in one short sentence."},
{"role": "user", "content": str(user_message)},
],
)
return completion.choices[0].message.content or ""
dataset = [
{"input": "How do I reset my password?", "expected": "password"},
{"input": "Where is my order?", "expected": "order"},
{"input": "How do I update billing?", "expected": "billing"},
]
evaluate(
"support-parallel",
dataset=dataset,
runner=run_llm,
scorers=[contains_scorer(source="Output", value_source="Expected")],
max_concurrency=4,
)
# Async runners need aevaluate
asyncio.run(
aevaluate(
"support-parallel-async",
dataset=dataset,
runner=run_llm_async,
scorers=[contains_scorer(source="Output", value_source="Expected")],
max_concurrency=4,
)
)