Spaces:
Running
Running
| import google.generativeai as genai | |
| from .database import query_sqlite | |
| # --- Python Implementation of Tools --- | |
| def get_projects(): return query_sqlite("projects") | |
| def get_skills(): return query_sqlite("skills") | |
| def get_certifications(): return query_sqlite("certifications") | |
| def get_articles(): return query_sqlite("articles") | |
| def get_videos(): return query_sqlite("videos") | |
| def get_research(): return query_sqlite("research") | |
| def get_content(): | |
| return { | |
| "articles": query_sqlite("articles"), | |
| "videos": query_sqlite("videos"), | |
| "research": query_sqlite("research") | |
| } | |
| def get_resume(): | |
| """Returns metadata for the resume file.""" | |
| return { | |
| "file_path": "images/resume.pdf", | |
| "preview_image": "images/resume_preview.png", | |
| "title": "Tharushika Abedheera - CV", | |
| "description": "Machine Learning Engineer & AI Specialist" | |
| } | |
| # Mapping for execution | |
| TOOL_FUNCTIONS = { | |
| "get_projects": get_projects, | |
| "get_skills": get_skills, | |
| "get_certifications": get_certifications, | |
| "get_articles": get_articles, | |
| "get_videos": get_videos, | |
| "get_research": get_research, | |
| "get_content": get_content, | |
| "get_resume": get_resume | |
| } | |
| # Mapping for Frontend Action Codes | |
| TOOL_CODE_MAP = { | |
| "get_projects": "show_projects", | |
| "get_skills": "show_skills", | |
| "get_certifications": "show_certifications", | |
| "get_articles": "show_articles", | |
| "get_videos": "show_videos", | |
| "get_research": "show_research", | |
| "get_content": "show_content", | |
| "get_resume": "show_resume" | |
| } | |
| # --- Gemini Schema Definitions --- | |
| projects_tool = genai.protos.FunctionDeclaration( | |
| name="get_projects", | |
| # STRICTER DESCRIPTION: | |
| description="ONLY use this when the user explicitly asks to SEE a list of projects, portfolio items, or coding work. Do NOT use for general questions.", | |
| parameters=genai.protos.Schema( | |
| type=genai.protos.Type.OBJECT, properties={}, required=[]) | |
| ) | |
| skills_tool = genai.protos.FunctionDeclaration( | |
| name="get_skills", | |
| # STRICTER DESCRIPTION: | |
| description="ONLY use this when the user explicitly asks to SEE technical skills, languages, or the tech stack. Do NOT use for general questions.", | |
| parameters=genai.protos.Schema( | |
| type=genai.protos.Type.OBJECT, properties={}, required=[]) | |
| ) | |
| certifications_tool = genai.protos.FunctionDeclaration( | |
| name="get_certifications", | |
| description="Retrieve certifications.", | |
| parameters=genai.protos.Schema( | |
| type=genai.protos.Type.OBJECT, properties={}, required=[]) | |
| ) | |
| articles_tool = genai.protos.FunctionDeclaration( | |
| name="get_articles", | |
| description="Retrieve articles.", | |
| parameters=genai.protos.Schema( | |
| type=genai.protos.Type.OBJECT, properties={}, required=[]) | |
| ) | |
| videos_tool = genai.protos.FunctionDeclaration( | |
| name="get_videos", | |
| description="Retrieve videos.", | |
| parameters=genai.protos.Schema( | |
| type=genai.protos.Type.OBJECT, properties={}, required=[]) | |
| ) | |
| research_tool = genai.protos.FunctionDeclaration( | |
| name="get_research", | |
| description="Retrieve research.", | |
| parameters=genai.protos.Schema( | |
| type=genai.protos.Type.OBJECT, properties={}, required=[]) | |
| ) | |
| content_tool = genai.protos.FunctionDeclaration( | |
| name="get_content", | |
| description="Retrieve ALL content (articles, videos, research).", | |
| parameters=genai.protos.Schema( | |
| type=genai.protos.Type.OBJECT, properties={}, required=[]) | |
| ) | |
| resume_tool = genai.protos.FunctionDeclaration( | |
| name="get_resume", | |
| description="Retrieve Tharushika's official resume/CV. Use this when the user asks to see, download, or get a copy of the resume.", | |
| parameters=genai.protos.Schema( | |
| type=genai.protos.Type.OBJECT, properties={}, required=[]) | |
| ) | |
| # List to pass to the model | |
| ALL_TOOLS_LIST = [ | |
| projects_tool, skills_tool, certifications_tool, | |
| articles_tool, videos_tool, research_tool, content_tool, | |
| resume_tool | |
| ] | |