session.py


Overview

The session.py file is a Flask-based API module within the InfiniFlow system that manages conversational sessions and completions for chatbots and agents. It provides RESTful endpoints to create, update, list, delete, and interact with chat sessions, agents, and knowledge bases. The file also supports OpenAI-like chat completions, streaming responses, and handles querying and managing user conversations, sessions, and agent states.

Key functionalities include:


Classes and Functions

The file primarily defines Flask route handler functions decorated with @manager.route and @token_required. There are no explicit classes defined within this file.


1. create(tenant_id, chat_id)

Route: POST /chats/<chat_id>/sessions

Creates a new chat session for a given chat (dialog).

curl -X POST https://api.example.com/chats/12345/sessions \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name": "My Session", "user_id": "user_001"}'

2. create_agent_session(tenant_id, agent_id)

Route: POST /agents/<agent_id>/sessions

Creates a new session for an agent.


3. update(tenant_id, chat_id, session_id)

Route: PUT /chats/<chat_id>/sessions/<session_id>

Updates attributes of an existing chat session except for messages and references.


4. chat_completion(tenant_id, chat_id)

Route: POST /chats/<chat_id>/completions

Handles chat completions for a session:


5. chat_completion_openai_like(tenant_id, chat_id)

Route: POST /chats_openai/<chat_id>/chat/completions

OpenAI-like chat completion endpoint supporting:

Request JSON:

Usage Example:

See the large docstring inside the function for curl and Python OpenAI client examples.


6. agents_completion_openai_compatibility(tenant_id, agent_id)

Route: POST /agents_openai/<agent_id>/chat/completions

OpenAI-compatible chat completion endpoint for agents.


7. agent_completions(tenant_id, agent_id)

Route: POST /agents/<agent_id>/completions

Chat completions endpoint for agents.


8. list_session(tenant_id, chat_id)

Route: GET /chats/<chat_id>/sessions

Lists sessions for a chat with pagination and filtering.


9. list_agent_session(tenant_id, agent_id)

Route: GET /agents/<agent_id>/sessions

Lists sessions for an agent with similar filtering and pagination as chat sessions.


10. delete(tenant_id, chat_id)

Route: DELETE /chats/<chat_id>/sessions

Deletes one or multiple chat sessions.


11. delete_agent_session(tenant_id, agent_id)

Route: DELETE /agents/<agent_id>/sessions

Deletes one or multiple sessions for an agent, similar to delete.


12. ask_about(tenant_id)

Route: POST /sessions/ask

Asks a question against specified knowledge base datasets.


13. related_questions(tenant_id)

Route: POST /sessions/related_questions

Generates related search terms for a given user question.


14. chatbot_completions(dialog_id)

Route: POST /chatbots/<dialog_id>/completions

Chatbot completion endpoint with API key validation.


15. chatbots_inputs(dialog_id)

Route: GET /chatbots/<dialog_id>/info

Fetches chatbot metadata (title, avatar, prologue) for UI rendering.


16. agent_bot_completions(agent_id)

Route: POST /agentbots/<agent_id>/completions

Agent bot completion endpoint with API key validation.


17. begin_inputs(agent_id)

Route: GET /agentbots/<agent_id>/inputs

Fetches input form components and metadata for an agent's canvas.


18. ask_about_embedded()

Route: POST /searchbots/ask

Embedded search bot question answering with API key validation.


19. retrieval_test_embedded()

Route: POST /searchbots/retrieval_test

Tests retrieval functionality against a knowledge base.


20. related_questions_embedded()

Route: POST /searchbots/related_questions

Generates related questions for embedded search bots.


21. detail_share_embedded()

Route: GET /searchbots/detail

Fetches detailed information about a search app.


22. mindmap()

Route: POST /searchbots/mindmap

Generates a mind map based on a question and knowledge base IDs.


Important Implementation Details


System Interaction

These services typically interface with the database and backend AI components.


Visual Diagram

The following Mermaid class diagram summarizes the major Flask route handler functions and their relationships with key services and data entities in this file:

classDiagram
    class SessionAPI {
        +create(tenant_id, chat_id)
        +create_agent_session(tenant_id, agent_id)
        +update(tenant_id, chat_id, session_id)
        +chat_completion(tenant_id, chat_id)
        +chat_completion_openai_like(tenant_id, chat_id)
        +agents_completion_openai_compatibility(tenant_id, agent_id)
        +agent_completions(tenant_id, agent_id)
        +list_session(tenant_id, chat_id)
        +list_agent_session(tenant_id, agent_id)
        +delete(tenant_id, chat_id)
        +delete_agent_session(tenant_id, agent_id)
        +ask_about(tenant_id)
        +related_questions(tenant_id)
        +chatbot_completions(dialog_id)
        +chatbots_inputs(dialog_id)
        +agent_bot_completions(agent_id)
        +begin_inputs(agent_id)
        +ask_about_embedded()
        +retrieval_test_embedded()
        +related_questions_embedded()
        +detail_share_embedded()
        +mindmap()
    }

    class DialogService
    class ConversationService
    class API4ConversationService
    class UserCanvasService
    class KnowledgebaseService
    class SearchService
    class LLMBundle
    class APIToken

    SessionAPI --> DialogService : uses
    SessionAPI --> ConversationService : uses
    SessionAPI --> API4ConversationService : uses
    SessionAPI --> UserCanvasService : uses
    SessionAPI --> KnowledgebaseService : uses
    SessionAPI --> SearchService : uses
    SessionAPI --> LLMBundle : uses
    SessionAPI --> APIToken : validates

Summary

session.py is a core API module managing chat and agent conversational sessions in InfiniFlow. It covers session CRUD, chat completions with streaming, OpenAI-compatible interfaces, knowledge base querying, and auxiliary utilities for related questions and mind maps. It orchestrates multiple backend services and enforces security and ownership via token validation. The file is designed for scalability and supports real-time streaming interactions to provide responsive AI-powered chat experiences.


End of Documentation for session.py