| from fastapi import FastAPI, WebSocket, WebSocketDisconnect |
| from fastapi.responses import HTMLResponse |
| from fastapi.staticfiles import StaticFiles |
| from huggingface_hub import InferenceClient |
| import json |
|
|
| app = FastAPI() |
|
|
| |
| client = InferenceClient() |
|
|
| |
| app.mount("/static", StaticFiles(directory="static"), name="static") |
|
|
| @app.get("/") |
| async def get(): |
| return HTMLResponse(open("static/asic-design-code-generator.html").read()) |
|
|
| @app.websocket("/ws/generate_code") |
| async def generate_code(websocket: WebSocket): |
| await websocket.accept() |
| try: |
| while True: |
| data = await websocket.receive_text() |
| request_data = json.loads(data) |
| description = request_data.get("description") |
| language = request_data.get("language") |
| |
| |
| prompt = f"Generate {language} code only for the following ASIC design description. Provide the code without any additional explanation or comments.\n\n\n{description}" |
|
|
| messages = [{"role": "user", "content": prompt}] |
| |
| |
| generated_code = "" |
| stream = client.chat.completions.create( |
| model="Qwen/Qwen2.5-Coder-32B-Instruct", |
| messages=messages, |
| temperature=0.5, |
| max_tokens=4000, |
| top_p=0.7, |
| stream=True |
| ) |
| |
| |
| for chunk in stream: |
| generated_code += chunk.choices[0].delta.content |
| await websocket.send_text(generated_code) |
|
|
| except WebSocketDisconnect: |
| print("Client disconnected") |
|
|
| @app.websocket("/ws/refine_code") |
| async def refine_code(websocket: WebSocket): |
| await websocket.accept() |
| try: |
| while True: |
| data = await websocket.receive_text() |
| request_data = json.loads(data) |
| existing_code = request_data.get("existing_code") |
| language = request_data.get("language") |
| |
| |
| prompt = f"Refine the following {language} code based on the provided details. Return only the updated code, without explanations or comments.\n\n\n{existing_code}" |
| messages = [{"role": "user", "content": prompt}] |
| |
| |
| refined_code = "" |
| stream = client.chat.completions.create( |
| model="Qwen/Qwen2.5-Coder-32B-Instruct", |
| messages=messages, |
| temperature=0.5, |
| max_tokens=4000, |
| top_p=0.7, |
| stream=True |
| ) |
|
|
| |
| for chunk in stream: |
| refined_code += chunk.choices[0].delta.content |
| await websocket.send_text(refined_code) |
|
|
| except WebSocketDisconnect: |
| print("Client disconnected") |
| @app.websocket("/ws/optimize_code") |
| async def optimize_code(websocket: WebSocket): |
| await websocket.accept() |
| try: |
| data = await websocket.receive_text() |
| request_data = json.loads(data) |
| code = request_data.get("code") |
| language = request_data.get("language") |
| |
| prompt = f"Analyze the following {language} code for syntax, linting, and optimization suggestions:\n\n{code}" |
| messages = [{"role": "user", "content": prompt}] |
|
|
| refined_code = "" |
| stream = client.chat.completions.create( |
| model="Qwen/Qwen2.5-Coder-32B-Instruct", |
| messages=messages, |
| temperature=0.5, |
| max_tokens=4000, |
| top_p=0.7, |
| stream=True |
| ) |
| |
| for chunk in stream: |
| refined_code += chunk.choices[0].delta.content |
| await websocket.send_text(refined_code) |
|
|
| except WebSocketDisconnect: |
| print("Client disconnected") |
|
|
| |
| @app.websocket("/ws/generate_test_bench") |
| async def generate_test_bench(websocket: WebSocket): |
| await websocket.accept() |
| try: |
| data = await websocket.receive_text() |
| request_data = json.loads(data) |
| code = request_data.get("code") |
| language = request_data.get("language") |
| |
| prompt = f"Generate test benches and identify potential failure modes for the following {language} code:\n\n{code}" |
| messages = [{"role": "user", "content": prompt}] |
| |
| refined_code = "" |
| stream = client.chat.completions.create( |
| model="Qwen/Qwen2.5-Coder-32B-Instruct", |
| messages=messages, |
| temperature=0.5, |
| max_tokens=512, |
| top_p=0.7, |
| stream=True |
| ) |
| |
| for chunk in stream: |
| refined_code += chunk.choices[0].delta.content |
| await websocket.send_text(refined_code) |
|
|
| except WebSocketDisconnect: |
| print("Client disconnected") |