This is a fork of Google Gemini quick start project. If you are looking for official examples, use the original repo!
This project is in order to running AI locally, and can support commodity hardware e.g. I have GTX 1070 Ti.
This project doesn't incldue tests at this point and not intended for production or critical usage, it's main goal is personal AI usage.
Enjoy!
This project demonstrates a fullstack application using a React frontend and a LangGraph-powered backend agent. The agent is designed to perform comprehensive research on a user's query by dynamically generating search terms, querying the web using Google Search, reflecting on the results to identify knowledge gaps, and iteratively refining its search until it can provide a well-supported answer with citations. This application serves as an example of building research-augmented conversational AI using OpenAI API-compatible models and other tools e.g. DuckDuckGo.
- 💬 Fullstack application with a React frontend and LangGraph backend.
- 🧠 Powered by a LangGraph agent for advanced research and conversational AI.
- 🔍 Dynamic search query generation using Google Gemini models.
- 🌐 Integrated web research via DuckDuckGo API.
- 🤔 Reflective reasoning to identify knowledge gaps and refine searches.
- 📄 Generates answers with citations from gathered sources.
- 🔄 Hot-reloading for both frontend and backend development during development.
The project is divided into two main directories:
frontend/
: Contains the React application built with Vite.backend/
: Contains the LangGraph/FastAPI application, including the research agent logic.
Follow these steps to get the application running locally for development and testing.
1. Prerequisites:
- Node.js and npm (or yarn/pnpm)
- Python 3.12+
- virtualenv -p python3.12 .venv
2. Install Dependencies:
Backend:
cd backend
uv pip install -e '.[dev]'
uv build
Frontend:
cd frontend
npm install
3. Run Development Servers:
Backend & Frontend:
make dev
This will run the backend and frontend development servers. Open your browser and navigate to the frontend development server URL (e.g., http://localhost:5173/app
).
Alternatively, you can run the backend and frontend development servers separately. For the backend, open a terminal in the backend/
directory and run langgraph dev
. The backend API will be available at http://127.0.0.1:2024
. It will also open a browser window to the LangGraph UI. For the frontend, open a terminal in the frontend/
directory and run npm run dev
. The frontend will be available at http://localhost:5173
.
The core of the backend is a LangGraph agent defined in backend/src/agent/graph.py
. It follows these steps:
- Generate Initial Queries: Based on your input, it generates a set of initial search queries using a OpenAI API-compatible model (e.g. Qwen3).
- Web Research: For each query, it uses the Gemini model with the DuckDuckGo tool to find relevant web pages.
- Reflection & Knowledge Gap Analysis: The agent analyzes the search results to determine if the information is sufficient or if there are knowledge gaps. It uses a OpenAI API-compatible model (e.g. Qwen3) for this reflection process.
- Iterative Refinement: If gaps are found or the information is insufficient, it generates follow-up queries and repeats the web research and reflection steps (up to a configured maximum number of loops).
- Finalize Answer: Once the research is deemed sufficient, the agent synthesizes the gathered information into a coherent answer, including citations from the web sources, using OpenAI API-compatible model (e.g. Qwen3).
In production, the backend server serves the optimized static frontend build. LangGraph requires a Redis instance and a Postgres database. Redis is used as a pub-sub broker to enable streaming real time output from background runs. Postgres is used to store assistants, threads, runs, persist thread state and long term memory, and to manage the state of the background task queue with 'exactly once' semantics. For more details on how to deploy the backend server, take a look at the LangGraph Documentation.
- React (with Vite) - For the frontend user interface.
- Tailwind CSS - For styling.
- Shadcn UI - For components.
- LangGraph - For building the backend research agent.
- DuckDuckGo Gemini - tool for web searches.
- LM Studio - for providing local inference to models sourced from HuggingFace (GGUF) and providing OpenAI API-compatible interface.
- Qwen3 - OSS models that support reasoning and tool usage, sourced from HuggingFace.
This project is licensed under the Apache License 2.0. See the LICENSE file for details.