ai-engine

Configuration Guide

This guide covers the optional features and their configuration in Morphic.

Table of Contents

Chat History Storage

Follow the detailed setup guide at Building your own RAG chatbot with Upstash

  1. Create a database at Upstash Console
  2. Navigate to the Details tab and find the “Connect your database” section
  3. Copy the REST API credentials from the .env section
  4. Configure your .env.local:
NEXT_PUBLIC_ENABLE_SAVE_CHAT_HISTORY=true
USE_LOCAL_REDIS=false
UPSTASH_REDIS_REST_URL=[YOUR_UPSTASH_REDIS_REST_URL]
UPSTASH_REDIS_REST_TOKEN=[YOUR_UPSTASH_REDIS_REST_TOKEN]

Using Local Redis

  1. Ensure Redis is installed and running locally
  2. Configure your .env.local:
NEXT_PUBLIC_ENABLE_SAVE_CHAT_HISTORY=true
USE_LOCAL_REDIS=true
LOCAL_REDIS_URL=redis://localhost:6379

Search Providers

SearXNG Configuration

SearXNG can be used as an alternative search backend with advanced search capabilities.

Basic Setup

  1. Set up SearXNG as your search provider:
SEARCH_API=searxng
SEARXNG_API_URL=http://localhost:8080
SEARXNG_SECRET=""  # generate with: openssl rand -base64 32

Docker Setup

  1. Ensure you have Docker and Docker Compose installed
  2. Two configuration files are provided in the root directory:
    • searxng-settings.yml: Contains main configuration for SearXNG
    • searxng-limiter.toml: Configures rate limiting and bot detection

Advanced Configuration

  1. Configure environment variables in your .env.local:
# SearXNG Base Configuration
SEARXNG_PORT=8080
SEARXNG_BIND_ADDRESS=0.0.0.0
SEARXNG_IMAGE_PROXY=true

# Search Behavior
SEARXNG_DEFAULT_DEPTH=basic  # Set to 'basic' or 'advanced'
SEARXNG_MAX_RESULTS=50  # Maximum number of results to return
SEARXNG_ENGINES=google,bing,duckduckgo,wikipedia  # Comma-separated list of search engines
SEARXNG_TIME_RANGE=None  # Time range: day, week, month, year, or None
SEARXNG_SAFESEARCH=0  # 0: off, 1: moderate, 2: strict

# Rate Limiting
SEARXNG_LIMITER=false  # Enable to limit requests per IP

Advanced Search Features

Customizing SearXNG

You can modify searxng-settings.yml to:

Example of disabling specific engines:

engines:
  - name: wikidata
    disabled: true

For detailed configuration options, refer to the SearXNG documentation

Troubleshooting

docker-compose logs searxng

Additional AI Providers

Models are configured in public/config/models.json. Each model requires its corresponding API key to be set in the environment variables.

Note: Ollama models are discovered dynamically at runtime when an Ollama server is available. Only models that expose the tools capability will appear in Morphic, so you no longer need to keep placeholder Ollama entries in models.json.

Model Configuration

The models.json file contains an array of model configurations with the following structure:

{
  "models": [
    {
      "id": "model-id",
      "name": "Model Name",
      "provider": "Provider Name",
      "providerId": "provider-id",
      "enabled": true,
      "toolCallType": "native|manual",
      "toolCallModel": "tool-call-model-id" // optional, only needed if toolCallType is "manual" and you need to specify a different model for tool calls
    }
  ]
}

Provider API Keys

Google Generative AI

GOOGLE_GENERATIVE_AI_API_KEY=[YOUR_API_KEY]

Anthropic

ANTHROPIC_API_KEY=[YOUR_API_KEY]

Groq

GROQ_API_KEY=[YOUR_API_KEY]

Ollama

OLLAMA_BASE_URL=http://localhost:11434

When this variable is set, Morphic will automatically discover Ollama models that advertise the tools capability. Models without this capability are ignored, and no static configuration in models.json is required unless you need to override specific settings.

Azure OpenAI

AZURE_API_KEY=[YOUR_API_KEY]
AZURE_RESOURCE_NAME=[YOUR_RESOURCE_NAME]

DeepSeek

DEEPSEEK_API_KEY=[YOUR_API_KEY]

Fireworks

FIREWORKS_API_KEY=[YOUR_API_KEY]

xAI

XAI_API_KEY=[YOUR_XAI_API_KEY]

OpenAI Compatible Model

OPENAI_COMPATIBLE_API_KEY=[YOUR_API_KEY]
OPENAI_COMPATIBLE_API_BASE_URL=[YOUR_API_BASE_URL]

Other Features

Share Feature

NEXT_PUBLIC_ENABLE_SHARE=true
SERPER_API_KEY=[YOUR_API_KEY]

Alternative Retrieve Tool

JINA_API_KEY=[YOUR_API_KEY]