Core framework for NLWeb - Natural Language Web interface with config-driven provider architecture
Project description
nlweb-core
Core framework for NLWeb - Natural Language Web interface with config-driven provider architecture.
Overview
nlweb-core provides the foundational framework for building natural language interfaces to web services. It implements:
- Config-driven provider architecture for LLMs, embeddings, and vector databases
- Dynamic module loading based on configuration
- Unified interfaces for retrieval, ranking, and LLM operations
- HTTP server with Server-Sent Events (SSE) streaming support
- NLWeb Protocol v0.5 implementation
Installation
pip install nlweb-core
Note: You also need to install provider packages. See examples below.
Provider Packages
nlweb-core uses a plugin architecture. Install provider packages separately:
Bundle Packages (recommended for getting started)
# All retrieval providers
pip install nlweb-retrieval
# All LLM and embedding providers
pip install nlweb-models
Individual Provider Packages (coming soon)
# Azure-specific providers
pip install nlweb-azure-vectordb nlweb-azure-models
Quick Start
1. Create a configuration file
Create config.yaml:
# LLM Configuration
llm:
provider: openai
import_path: nlweb_models.llm.openai_client
class_name: OpenAIClient
api_key_env: OPENAI_API_KEY
models:
high: gpt-4
low: gpt-3.5-turbo
# Embedding Configuration
embedding:
provider: openai
import_path: nlweb_models.embedding.openai_embedding
class_name: get_openai_embeddings
api_key_env: OPENAI_API_KEY
model: text-embedding-3-small
# Retrieval Configuration
retrieval:
provider: elasticsearch
import_path: nlweb_retrieval.elasticsearch_client
class_name: ElasticsearchClient
api_endpoint_env: ELASTICSEARCH_URL
index_name: my_index
2. Set environment variables
export OPENAI_API_KEY=your_key_here
export ELASTICSEARCH_URL=http://localhost:9200
3. Use in your application
import nlweb_core
# Initialize with your config
nlweb_core.init(config_path="./config.yaml")
# Use the framework
from nlweb_core.simple_server import run_server
run_server()
Configuration
The config file supports three main sections:
LLM Configuration
provider: Provider name (used for identification)import_path: Python module path to providerclass_name: Class or function name to importapi_key_env: Environment variable containing API keymodels: Model IDs for high/low tiers
Embedding Configuration
provider: Provider nameimport_path: Python module pathclass_name: Class or function namemodel: Embedding model ID
Retrieval Configuration
provider: Provider nameimport_path: Python module pathclass_name: Client class nameapi_endpoint_env: Environment variable for endpoint URLindex_name: Index/collection name
Architecture
nlweb-core provides orchestration layers:
retriever.py: Vector database operationsllm.py: LLM provider dispatchembedding.py: Embedding generationranking.py: LLM-based result rankingsimple_server.py: HTTP server with SSE streaming
All provider-specific code lives in separate packages.
License
MIT License - Copyright (c) 2025 Microsoft Corporation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nlweb_core-0.5.0.tar.gz.
File metadata
- Download URL: nlweb_core-0.5.0.tar.gz
- Upload date:
- Size: 31.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccd7fa661ede13475806f5ca895f5d800f04c7257bdc813b415560efc6f4c2fa
|
|
| MD5 |
2d68fb794172d5867c943b55cc6dc8df
|
|
| BLAKE2b-256 |
4b141155df57a2a7f6c78c428f6ae3825f412b07b52fa5957e09d6503034e9f4
|
File details
Details for the file nlweb_core-0.5.0-py3-none-any.whl.
File metadata
- Download URL: nlweb_core-0.5.0-py3-none-any.whl
- Upload date:
- Size: 35.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1cc7831afb9fd32b3a748f9e4afb313c6e85c4a81c333d428924422510f165fc
|
|
| MD5 |
0d0e482c068563b6ddfc4a8fe38ce759
|
|
| BLAKE2b-256 |
d016a8b5c22ca77abae636339adc114cbda029e09f7ef3e4aec214b0eb244ae7
|