🤖 AI-powered research assistant built with LangChain and Streamlit, designed to plan, execute, and synthesize web research into structured reports.
- Overview
- Key Features
- Tech Stack
- Getting Started
- Environment Variables
- How to Use
- Deployment
- CI/CD Pipeline
- Development Workflow
- Project Structure
- Troubleshooting
- Contributing
- License
This project uses a multi-agent workflow to:
- Build a research plan
- Collect relevant information from the web
- Synthesize findings into a professional, readable report
The application is built for local usage and cloud deployment on Render.
- Intelligent planning with LLM-assisted research decomposition
- Multi-agent execution for search and synthesis tasks
- Web research integration powered by Tavily
- Live progress updates through Streamlit
- Structured report generation for clear outcomes
- Docker + Render deployment support with GitHub Actions automation
- Language: Python 3.11+
- Frameworks/Libraries: Streamlit, LangChain
- Search: Tavily API
- Model Providers: OpenRouter, Groq
- Deployment: Docker, Render
- Automation: GitHub Actions
- Python 3.11.13 or later
- Git
- Docker (optional, for containerized local runs)
-
Clone the repository
git clone <your-repo-url> cd personal-research-assistant
-
Create and activate a virtual environment
# Windows (PowerShell) python -m venv venv .\venv\Scripts\Activate.ps1 # macOS/Linux python -m venv venv source venv/bin/activate
-
Install dependencies
pip install pip-tools pip-compile requirements.in pip install -r requirements.txt
-
Configure environment variables
# macOS/Linux cp .env.example .env # Windows PowerShell Copy-Item .env.example .env
-
Run the app
streamlit run src/main.py
-
Open:
http://localhost:8501
Copy .env.example to .env and set the following values:
| Variable | Required | Description |
|---|---|---|
OPENROUTER_API_KEY |
Yes | OpenRouter API key |
OPENROUTER_BASE_URL |
Yes | OpenRouter base URL (default: https://openrouter.ai/api/v1) |
YOUR_SITE_URL |
Yes | Public URL for your deployed app |
YOUR_SITE_NAME |
Yes | Display name for your app |
GROQ_API_KEY |
Yes | Groq API key |
TAVILY_API_KEY |
Yes | Tavily API key |
- Start the app with
streamlit run src/main.py - Enter your research topic in the UI
- Let the assistant plan and execute research tasks
- Review the generated report in the Streamlit interface
Use the included render.yaml for infrastructure-as-code deployment.
- Go to Render Dashboard
- Click New → Blueprint
- Connect your GitHub repository
- Render will detect
render.yaml - Set required environment variables in Render
- Create a Web Service on Render
- Connect your repository
- Configure:
- Environment: Docker
- Dockerfile Path:
./Dockerfile - Branch:
main - Plan: Free
- Set all required environment variables
For full deployment walkthrough and screenshots, see RENDER_DEPLOYMENT.md.
GitHub Actions workflow file: .github/workflows/ci.yml
Current pipeline includes:
- Dependency installation in a
testjob - Docker image build with cache optimization
- Trivy vulnerability scan (
CRITICAL,HIGH) - Optional image push to GHCR (non-PR pushes to
main/develop) - Optional Render deployment trigger on
main
ruff check . --fix
black .
isort .
pytest./deploy.shpersonal-research-assistant/
├── .github/workflows/ci.yml
├── src/
│ ├── agent/
│ ├── tools/
│ ├── ui/
│ └── main.py
├── tests/
├── .env.example
├── .pre-commit-config.yaml
├── Dockerfile
├── README.md
├── RENDER_DEPLOYMENT.md
├── deploy.sh
├── pyproject.toml
├── render.yaml
├── requirements.in
└── requirements.txt
-
Import or module errors
- Ensure your virtual environment is activated
- Reinstall dependencies with
pip install -r requirements.txt
-
API key issues
- Confirm all required variables are present in
.env - Check for typos in variable names
- Verify keys are active and have available quota
- Confirm all required variables are present in
-
Docker build failures
docker system prune -a docker build --no-cache -t research-assistant . -
Render deployment problems
- Verify environment variables in Render dashboard
- Check build/deploy logs in Render
- Ensure
PORT=8501is set where needed
| Task | Linux/macOS | Windows PowerShell |
|---|---|---|
| Activate venv | source venv/bin/activate |
.\venv\Scripts\Activate.ps1 |
| Copy env file | cp .env.example .env |
Copy-Item .env.example .env |
| Run deploy script | ./deploy.sh |
bash deploy.sh |
- Fork the repository
- Create a feature branch
- Make your changes
- Run formatting/linting/tests
- Open a pull request with a clear description
This project is licensed under the MIT License. See the LICENSE file for details.
Built with ❤️ using LangChain, Streamlit, and modern DevOps practices.