| import json | | | import sys | | | from subprocess import getoutput as run_shell | | | from urllib.request import Request, urlopen | | | MODEL = "gpt-5.6" | | | CONTEXT_WINDOW_TOKENS = 1_050_000 | |
| endpoint_url = sys.argv[1] | |
| history = [] | |
| request_body = dict( | |
| model=MODEL, | | | input=history, | | | tools=[dict(type="custom", name="sh")], | | | ) | |
| while user_prompt := input("> "): | |
| history += [dict(role="user", content=user_prompt)] | |
| headers = {"Content-Type": "application/json"} | |
| while True: | |
| output_items = ( | |
| response := json.load( | |
| urlopen( | | | Request( | | | endpoint_url, | | | json.dumps(request_body).encode(), | | | headers, | | | ) | | | ) | | | ) | | | )["output"] | | | history += output_items | | | tool_calls = [ | | | item | | | for item in output_items | | | if item["type"] == "custom_tool_call" | | | ] | |
| context_usage_percent = ( | |
| response["usage"]["total_tokens"] / CONTEXT_WINDOW_TOKENS * 100 | |
| ) | | | if not tool_calls: | | | print( | |
| output_items[-1]["content"][0]["text"], | |
| f"\n[{context_usage_percent:06.3f}%]", | |
| ) | | | break | | | history += [ | | | dict( | | | type="custom_tool_call_output", | |
| call_id=tool_call["call_id"], | |
| output=run_shell(tool_call["input"]), | |
| ) | | | for tool_call in tool_calls | | | ] |