forked from BasedHardware/omi
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsmoke-llm-gateway-openai-schemas.py
More file actions
executable file
·71 lines (61 loc) · 2.66 KB
/
Copy pathsmoke-llm-gateway-openai-schemas.py
File metadata and controls
executable file
·71 lines (61 loc) · 2.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env python3
from __future__ import annotations
import argparse
import asyncio
import os
import sys
from collections.abc import Sequence
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from llm_gateway.gateway.auth import ServiceCaller
from llm_gateway.gateway.credentials import build_omi_managed_credential_context
from llm_gateway.gateway.providers import OpenAICompatibleChatCompletionProvider
from llm_gateway.gateway.schemas import ProviderRef
from models.structured_extraction import ActionItemsExtraction, ConversationStructureExtraction
from utils.llm.chat import RequiresContext
from utils.llm.gateway_client import _chat_structured_payload # type: ignore[reportPrivateUsage] # test script accessing internal helper
PROVIDER_REF = ProviderRef(provider='openai', model='gpt-4.1-mini')
SMOKE_FEATURES = (
('chat_extraction.requires_context', RequiresContext),
('conversation_structure.extract.shadow', ConversationStructureExtraction),
('conversation_action_items.extract.shadow', ActionItemsExtraction),
)
async def main(argv: Sequence[str] | None = None) -> int:
parser = argparse.ArgumentParser(
description='Smoke-test live OpenAI acceptance of LLM gateway structured-output schemas.'
)
parser.add_argument(
'--timeout-ms',
type=int,
default=8000,
help='Per-request timeout in milliseconds. Defaults to 8000.',
)
args = parser.parse_args(argv)
if not os.getenv('OPENAI_API_KEY'):
parser.error('OPENAI_API_KEY is required')
provider = OpenAICompatibleChatCompletionProvider()
try:
for feature, output_model in SMOKE_FEATURES:
request = _chat_structured_payload(
'Return the smallest valid JSON object for this schema. Do not include prose.',
output_model,
feature=feature,
)
request['model'] = PROVIDER_REF.model
request['max_completion_tokens'] = 128
request.pop('metadata', None)
response = await provider.create_chat_completion(
request,
provider_ref=PROVIDER_REF,
credentials=build_omi_managed_credential_context(ServiceCaller(name='backend')),
timeout_ms=args.timeout_ms,
)
content = response['choices'][0]['message']['content']
if not isinstance(content, str) or not content.strip():
raise RuntimeError(f'{feature}: provider returned empty content')
print(f'{feature}: ok')
finally:
await provider.aclose()
return 0
if __name__ == '__main__':
raise SystemExit(asyncio.run(main()))