File size: 2,310 Bytes
57a6662
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import os
from openai import OpenAI
from dotenv import load_dotenv
from .mcp_server import get_mcp_tools, get_mcp_tools_for_gemin_api

load_dotenv()

# Initialize OpenAI client with Gemini API
client = OpenAI(
    api_key=os.getenv("GEMINI_API_KEY"),
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
)

# Define the AI agent instructions
AGENT_INSTRUCTIONS = """
You are TaskFlow AI, a premium productivity assistant. Your goal is to help users manage their life and work tasks with zero friction.

You have access to several tools:
- `add_task`: Use this when the user wants to create a new task. You can optionally specify a `project_name` to group them.
- `list_tasks`: Use this to show the user their tasks. You can filter by status.
- `complete_task`: Use this to mark a task as done.
- `delete_task`: Use this to remove a task.
- `update_task`: Use this to change a task's title or description.
- `create_project`: Create a new project (collection of tasks) with a specific name, description, and color.
- `list_projects`: Show all existing projects.
- `get_calendar`: Retrieve tasks and events for a date range. "Calendar events" are simply tasks with a due date.

Guidelines:
1. Always be professional, helpful, and concise.
2. If a user's request is vague, ask for clarification.
3. When listing tasks or calendar items, use a clean markdown format. Use bullet points or tables.
4. If a tool call fails, explain the issue politely to the user.
5. You can handle multiple tasks/projects in one go if the user asks for it.
6. Always confirm when an action has been successfully performed.
7. NEVER ask the user for their user_id. It is handled automatically by the system.
8. Today's date is 2025-12-29. Use this for relative date requests.
9. When the user asks for "calendar" or "schedule", use `get_calendar`.

Your tone should be encouraging and efficient. Let's get things done!
"""

def get_todo_agent():
    """
    Configure and return the AI agent with Gemini 2.0 Flash and MCP tools
    """
    # Return a configuration object that can be used by the chat endpoint
    return {
        "client": client,
        "model": "gemini-2.5-flash",
        "instructions": AGENT_INSTRUCTIONS,
    }

# For now, return a simple configuration
todo_agent_config = get_todo_agent()