boqapi / README.md
Dinuk-Di
Updated the chat api
a2c5f90
---
title: LangChain Chat API
emoji: 💬
colorFrom: blue
colorTo: purple
sdk: docker
pinned: false
app_port: 7860
---
# LangChain Chat API
A production-ready Chat API powered by **LangChain** and **HuggingFace Inference Endpoints**. This lightweight FastAPI application proxies user queries to advanced Open-Source Large Language Models (like `DeepSeek-R1-0528` or `Qwen3`) using the `HuggingFaceEndpoint` class, avoiding the need for expensive local GPU inference.
## Features
- **LangChain Integration:** Uses `PromptTemplate` and `ChatHuggingFace` with structured outputs to cleanly format and return model responses.
- **Lightweight Architecture:** Eliminates the need for massive PyTorch or Transformers dependencies by offloading inference to Hugging Face.
- **FastAPI Backend:** Provides robust, asynchronous request handling with CORS middleware and global exception management.
---
## Setup and Execution
### 1. Requirements
Since the application offloads inference to the Hugging Face API, you must provide your Hugging Face API Token.
1. Get a Hugging Face API Token from your [Hugging Face Settings](https://huggingface.co/settings/tokens).
2. Set it as an environment variable (or as a Secret if deploying to Hugging Face Spaces):
```bash
export HUGGINGFACEHUB_API_TOKEN="hf_your_token_here"
```
### 2. Running with Docker
The provided `Dockerfile` builds a highly-optimized, slim Python image.
```bash
docker build -t chat-api .
docker run -p 7860:7860 -e HUGGINGFACEHUB_API_TOKEN="your_token" chat-api
```
### 3. Running Locally
```bash
# Clone the repository and navigate to the project directory
cd multimodal-rag
# Install Python dependencies
pip install -r requirements.txt
# Run the FastAPI application
python app/main.py
```
---
## Example API Usage
### 1. Root / UI Check
When accessing the Space UI directly in a browser, the application returns a status payload pointing to the endpoints.
```bash
curl -X GET "http://localhost:7860/"
```
### 2. Health Check
```bash
curl -X GET "http://localhost:7860/api/health"
```
### 3. Chat Endpoint
Submit a question to the LLM. It returns a structured JSON answer containing the answer and justification.
```bash
curl -X POST "http://localhost:7860/api/chat" \
-H "Content-Type: application/json" \
-d '{
"question": "What is LangChain?"
}'
```
**Response Example:**
```json
{
"answer": "LangChain is an open-source framework designed to simplify the creation of applications using large language models.",
"justification": "The user asked for a definition of LangChain, which this provides concisely."
}
```