48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
import asyncio, sys, os, copy
|
|
from pathlib import Path
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
sys.path.insert(0, str(ROOT))
|
|
from utils.api_client import DeepSeekClient
|
|
|
|
class FakeClient(DeepSeekClient):
|
|
def __init__(self):
|
|
super().__init__(thinking_mode=True, web_mode=True)
|
|
self.sent = []
|
|
self.call_idx = 0
|
|
async def chat(self, messages, tools=None, stream=True):
|
|
self.sent.append(copy.deepcopy(messages))
|
|
self.call_idx += 1
|
|
if self.call_idx == 1:
|
|
yield {
|
|
"choices": [
|
|
{"delta": {
|
|
"reasoning_content": "think1 ",
|
|
"tool_calls": [
|
|
{"id": "call_1", "index": 0, "type": "function", "function": {"name": "foo", "arguments": "{}"}}
|
|
]
|
|
}}
|
|
]
|
|
}
|
|
yield {"choices": [{"delta": {}}]}
|
|
else:
|
|
yield {"choices": [{"delta": {"content": "done"}}]}
|
|
yield {"choices": [{"delta": {}}]}
|
|
|
|
async def main():
|
|
client = FakeClient()
|
|
messages = [
|
|
{"role": "system", "content": "sys"},
|
|
{"role": "user", "content": "hi"}
|
|
]
|
|
async def tool_handler(name, args):
|
|
return '{}'
|
|
out = await client.chat_with_tools(messages, tools=[{"type":"function","function":{"name":"foo","parameters":{"type":"object","properties":{}}}}], tool_handler=tool_handler)
|
|
print('final', out)
|
|
import json
|
|
for i, m in enumerate(client.sent, 1):
|
|
print('\ncall', i)
|
|
print(json.dumps(m, ensure_ascii=False, indent=2))
|
|
|
|
if __name__ == '__main__':
|
|
asyncio.run(main())
|