| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import importlib.util
- import unittest
- from pathlib import Path
- MODULE_PATH = Path(__file__).resolve().parent.parent / "tools" / "lmstudio" / "openai_reasoning_proxy.py"
- if MODULE_PATH.exists():
- spec = importlib.util.spec_from_file_location("openai_reasoning_proxy", MODULE_PATH)
- module = importlib.util.module_from_spec(spec)
- assert spec is not None and spec.loader is not None
- spec.loader.exec_module(module)
- proxy = module
- else: # pragma: no cover
- proxy = None
- class OpenAIReasoningProxyTests(unittest.TestCase):
- def setUp(self):
- if proxy is None:
- self.fail("tools.lmstudio.openai_reasoning_proxy is not available")
- def test_build_native_payload_prefers_reasoning_field(self):
- request_payload = {
- "model": "qwen/qwen3.6-35b-a3b",
- "messages": [
- {"role": "system", "content": "be precise"},
- {"role": "user", "content": "hello"},
- {"role": "assistant", "content": "hi"},
- {"role": "user", "content": "continue"},
- ],
- "max_tokens": 64,
- "temperature": 0.1,
- "reasoning": "off",
- "enable_thinking": True,
- }
- native_payload = proxy.build_native_payload(request_payload)
- self.assertEqual(native_payload["model"], "qwen/qwen3.6-35b-a3b")
- self.assertEqual(
- native_payload["input"],
- "User: hello\n\nAssistant: hi\n\nUser: continue",
- )
- self.assertEqual(native_payload["max_output_tokens"], 64)
- self.assertEqual(native_payload["temperature"], 0.1)
- self.assertEqual(native_payload["reasoning"], "off")
- self.assertEqual(native_payload["system_prompt"], "be precise")
- self.assertFalse(native_payload["store"])
- def test_build_native_payload_maps_enable_thinking_false_to_reasoning_off(self):
- request_payload = {
- "model": "qwen/qwen3.6-35b-a3b",
- "messages": [{"role": "user", "content": "hello"}],
- "enable_thinking": False,
- }
- native_payload = proxy.build_native_payload(request_payload)
- self.assertEqual(native_payload["reasoning"], "off")
- def test_translate_native_response_keeps_reasoning_content(self):
- native_response = {
- "id": "chatcmpl-native",
- "model": "qwen/qwen3.6-35b-a3b",
- "output": [
- {"type": "reasoning", "content": "reasoning text"},
- {"type": "message", "content": "final answer"},
- ],
- "stats": {
- "input_tokens": 11,
- "total_output_tokens": 19,
- "reasoning_output_tokens": 7,
- },
- }
- translated = proxy.translate_native_response(native_response)
- self.assertEqual(translated["object"], "chat.completion")
- self.assertEqual(translated["model"], "qwen/qwen3.6-35b-a3b")
- self.assertEqual(translated["choices"][0]["message"]["content"], "final answer")
- self.assertEqual(
- translated["choices"][0]["message"]["reasoning_content"],
- "reasoning text",
- )
- self.assertEqual(translated["usage"]["prompt_tokens"], 11)
- self.assertEqual(translated["usage"]["completion_tokens"], 19)
- self.assertEqual(
- translated["usage"]["completion_tokens_details"]["reasoning_tokens"],
- 7,
- )
- if __name__ == "__main__":
- unittest.main()
|