Skip to main content

llama-index fastapi server

Project description

LlamaIndex Server

LlamaIndexServer is a FastAPI-based application that allows you to quickly launch your LlamaIndex Workflows and Agent Workflows as an API server with an optional chat UI. It provides a complete environment for running LlamaIndex workflows with both API endpoints and a user interface for interaction.

Features

  • Serving a workflow as a chatbot
  • Built on FastAPI for high performance and easy API development
  • Optional built-in chat UI with extendable UI components
  • Prebuilt development code

Installation

pip install llama-index-server

Quick Start

# main.py
from llama_index.core.agent.workflow import AgentWorkflow
from llama_index.core.workflow import Workflow
from llama_index.core.tools import FunctionTool
from llama_index.server import LlamaIndexServer


# Define a factory function that returns a Workflow or AgentWorkflow
def create_workflow() -> Workflow:
    def fetch_weather(city: str) -> str:
        return f"The weather in {city} is sunny"

    return AgentWorkflow.from_tools(
        tools=[
            FunctionTool.from_defaults(
                fn=fetch_weather,
            )
        ]
    )


# Create an API server for the workflow
app = LlamaIndexServer(
    workflow_factory=create_workflow,  # Supports Workflow or AgentWorkflow
    env="dev",  # Enable development mode
    include_ui=True,  # Include chat UI
    starter_questions=["What can you do?", "How do I use this?"],
    verbose=True
)

Running the Server

  • In the same directory as main.py, run the following command to start the server:

    fastapi dev
    
  • Making a request to the server:

    curl -X POST "http://localhost:8000/api/chat" -H "Content-Type: application/json" -d '{"message": "What is the weather in Tokyo?"}'
    
  • See the API documentation at http://localhost:8000/docs

  • Access the chat UI at http://localhost:8000/ (Make sure you set the env="dev" or include_ui=True in the server configuration)

Configuration Options

The LlamaIndexServer accepts the following configuration parameters:

  • workflow_factory: A callable that creates a workflow instance for each request
  • logger: Optional logger instance (defaults to uvicorn logger)
  • use_default_routers: Whether to include default routers (chat, static file serving)
  • env: Environment setting ('dev' enables CORS and UI by default)
  • include_ui: Whether to include the chat UI
  • component_dir: The directory for custom UI components rendering events emitted by the workflow. The default is None, which does not render custom UI components.
  • starter_questions: List of starter questions for the chat UI
  • verbose: Enable verbose logging
  • api_prefix: API route prefix (default: "/api")
  • server_url: The deployment URL of the server (default is None)
  • ui_path: Path for downloaded UI static files (default: ".ui")

Default Routers and Features

Chat Router

The server includes a default chat router at /api/chat for handling chat interactions.

Static File Serving

  • The server automatically mounts the data and output folders at {server_url}{api_prefix}/files/data (default: /api/files/data) and {server_url}{api_prefix}/files/output (default: /api/files/output) respectively.
  • Your workflows can use both folders to store and access files. As a convention, the data folder is used for documents that are ingested and the output folder is used for documents that are generated by the workflow.
  • The example workflows from create-llama (see below) are following this pattern.

Chat UI

When enabled, the server provides a chat interface at the root path (/) with:

  • Configurable starter questions
  • Real-time chat interface
  • API endpoint integration

Custom UI Components

You can add custom UI components for your workflow by providing component_dir config and adding custom .jsx or .tsx files to the directory. See Custom UI Components for more details.

Development Mode

In development mode (env="dev"), the server:

  • Enables CORS for all origins
  • Automatically includes the chat UI
  • Provides more verbose logging

API Endpoints

The server provides the following default endpoints:

  • /api/chat: Chat interaction endpoint
  • /api/files/data/*: Access to data directory files
  • /api/files/output/*: Access to output directory files

Best Practices

  1. Always provide a workflow factory that creates fresh workflow instances
  2. Use environment variables for sensitive configuration
  3. Enable verbose logging during development
  4. Configure CORS appropriately for your deployment environment
  5. Use starter questions to guide users in the chat UI

Getting Started with a New Project

Want to start a new project with LlamaIndexServer? Check out our create-llama tool to quickly generate a new project with LlamaIndexServer.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llama_index_server-0.1.9.tar.gz (24.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llama_index_server-0.1.9-py3-none-any.whl (34.8 kB view details)

Uploaded Python 3

File details

Details for the file llama_index_server-0.1.9.tar.gz.

File metadata

  • Download URL: llama_index_server-0.1.9.tar.gz
  • Upload date:
  • Size: 24.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.11.11 Linux/6.8.0-1021-azure

File hashes

Hashes for llama_index_server-0.1.9.tar.gz
Algorithm Hash digest
SHA256 2edfaf9801871f4b411045031071a42e2665e1ab5408ebf4aa37e808b4bc1473
MD5 6eba12d6abbc009ac8d29365abfe255a
BLAKE2b-256 3e17cfa575854063e76b5f556af0c6d5f917e9e708828e4638c5b8c4502ebe4d

See more details on using hashes here.

File details

Details for the file llama_index_server-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: llama_index_server-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 34.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.11.11 Linux/6.8.0-1021-azure

File hashes

Hashes for llama_index_server-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 37fbfb844cb8af6d848725206145ebc8e8f4b609e3f8dae1cf3902874256388d
MD5 403b1785fe15d1fe8c47cbb5a9a6bf11
BLAKE2b-256 a5a12815427af217b9ac3e90aadab4d5aff5eb841d26a6ef6314307420b0ff22

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page