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
Metadata
Release files for nlweb-core 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nlweb_core-0.7.0.tar.gz | 90.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nlweb_core-0.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 191.0 kB
Release files / nlweb_core-0.7.0.tar.gz
| Download URL | nlweb_core-0.7.0.tar.gz |
|---|---|
| Size | 90.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
574192f41fcc403c9d53e476dceb6ed485825813f2d7d6949eb7c146446f2176
|
|
BLAKE2b-256 checksum How to use checksums |
7a1028d7e4e70d19bd184ad7d2ec66b47310b43f0cfe063a81ecf41e15bc00ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / nlweb_core-0.7.0-py3-none-any.whl
| Download URL | nlweb_core-0.7.0-py3-none-any.whl |
|---|---|
| Size | 100.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3cd06457d496bdd61176bd270fa7bda35961897332c84e213657d6a89e6329d8
|
|
BLAKE2b-256 checksum How to use checksums |
6648fbdf92e57b8f896ac63a5cc16b4bb9f51bdd04c4118a09d7b0d017884096
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|