1 line
3.2 KiB
JSON
1 line
3.2 KiB
JSON
{"repo": "antferdom/agents-experiments", "files": {"chat/chat_terminal.py": {"334fbc5bf166689c100168730e53f8525de939e7": {"t": 1785674548.5355704, "n": 2934, "h": "3c3f72c764b8a08a", "c": "# Adapted from: https://github.com/tinygrad/tinygrad/blob/9561803cb0370461bc991b3af7c4e9867cd8f0eb/examples/coder.py#L22\nimport re\nimport os\nfrom openai import OpenAI\nfrom rich.console import Console\nfrom rich.live import Live\nfrom rich.markdown import Markdown\nfrom rich.text import Text\nfrom io import StringIO\nfrom contextlib import redirect_stdout\nimport traceback\n\nopenai_api_key = os.getenv(\n \"OPENAI_API_KEY\",\n \"xai-sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\",\n)\nopenai_api_base = \"https://api.x.ai/v1\" # \"http://127.0.0.1:30000/v1\"\nclient = OpenAI(api_key=openai_api_key, base_url=openai_api_base)\n\nconsole = Console()\n\nmessages = [\n {\n \"role\": \"system\",\n \"content\": \"You are Quentin, a helpful assistant who writes concise Python code to answer questions.\",\n }\n]\n\nwhile True:\n user_input = console.input(\"[bold blue]You:[/bold blue] \")\n if user_input.lower() == \"exit\":\n console.print(\"[yellow]Goodbye![/yellow]\")\n break\n # chat memory\n messages.append({\"role\": \"user\", \"content\": user_input})\n\n stream = client.chat.completions.create(\n model=\"grok-4-latest\",\n messages=messages,\n stream=True,\n temperature=0.7,\n max_tokens=32768,\n )\n\n # Stream and render assistant response with styles\n assistant_response = Text()\n current_type = None\n with Live(assistant_response, refresh_per_second=4, console=console) as live:\n for chunk in stream:\n delta = chunk.choices[0].delta\n if delta.content is not None:\n content = chunk.choices[0].delta.content\n assistant_response.append(content)\n live.update(assistant_response)\n # Add assistant response to history (plain text)\n messages.append({\"role\": \"assistant\", \"content\": assistant_response.plain})\n\n # Extract Python code block from plain text\n plain_response = assistant_response.plain\n code_block_pattern = r\"```python(.*?)```\"\n match = re.search(code_block_pattern, plain_response, re.DOTALL)\n\n if match:\n code = match.group(1).strip()\n run = console.input(\"[bold red]Run the code? (y/n): [/bold red]\").lower() == \"y\"\n if run:\n my_stdout = StringIO()\n try:\n with redirect_stdout(my_stdout):\n exec(code)\n output = my_stdout.getvalue()\n console.print(f\"[yellow]Code output:[/yellow]\\n{output}\")\n messages.append({\"role\": \"user\", \"content\": f\"Code output:\\n{output}\"})\n except Exception as e:\n error_msg = \"\".join(traceback.format_exception_only(e))\n console.print(f\"[red]Code error:[/red]\\n{error_msg}\")\n messages.append(\n {\"role\": \"user\", \"content\": f\"Code error:\\n{error_msg}\"}\n )\n else:\n console.print(\"<system>No Python code block found in the response.</system>\")"}}}} |