Team Ai
Apppublic

ThomasLe/code-grader-agent

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
test.py46 linesDownload Raw Back to BE
1from dotenv import load_dotenv2 3load_dotenv()4 5from agent.graph_flow import agent_graph6 7path_files = [8    "web-dev-tech-assessment/src/pages/Home.tsx",9    "web-dev-tech-assessment/src/types/index.ts",10    "web-dev-tech-assessment/src/components/search/SearchBar.tsx",11    "web-dev-tech-assessment/src/components/search/SearchContainer.tsx",12]13criterias_list = [14    "Code Quality & Best Practices:\n* Clean & Readable Code: Proper indentation, formatting, and structure. Meaningful variable and function names.\n* Component Structure: Uses functional components and hooks (avoids unnecessary class components).Components are reusable, modular, and follow SRP. Proper use of props and state (minimizes prop drilling, uses context/state management).\n* State Management: Uses useState, useEffect, useReducer, or context effectively. Avoids unnecessary re-renders (e.g., useMemo, useCallback).\n* Error Handling: Handles API errors properly (try/catch, error boundaries).Prevents app crashes with proper error messages and fallback UI.\n* Code Consistency: Follows a consistent coding style (Prettier, ESLint). Uses a defined naming convention (camelCase for variables/functions, PascalCase for components).\n* No Unnecessary Code: No console.logs, unused imports, or commented-out code. Cleans up side effects (useEffect cleanup functions).",15    "API Integration & Performance\n * Efficient API Calls: Uses fetch, axios, or other methods properly. Avoids unnecessary API calls (debounces search, optimizes re-fetching).\n* Loading & Error States: Shows loaders while fetching data. Displays proper error messages if API fails.",16]17initial_input = {18    "selected_files": path_files,19    "criterias_list": criterias_list,20    "project_description": "",21}22 23 24async def main():25 26    async for event in agent_graph.astream(27        input=initial_input,28        subgraphs=True,29    ):30        _, sub_event = event31        main_key: str = list(sub_event.keys())[0]32        print(main_key)33        sub_event: dict = sub_event[main_key]34        criteria = sub_event.get("criteria_index", None)35        if not criteria:36 37            continue38        main_key_processed = main_key.replace("_", " ")39        print(f"Processing step '{main_key_processed}' of criteria index {criteria}")40 41 42if __name__ == "__main__":43    import asyncio44 45    asyncio.run(main())46