A Streamlit application that extract graph data (entities and relationships) from text input using LangChain and OpenAI's GPT models, and generates interactive graphs.
👉 This repo is part of my project tutorial on Youtube:
- Two input methods: text upload (.txt files) or direct text input
- Interactive knowledge graph visualization
- Customizable graph display with physics-based layout
- Entity relationship extraction powered by OpenAI's GPT-4o model
- Python 3.8 or higher
- OpenAI API key
The application requires the following Python packages:
- langchain (>= 0.1.0): Core LLM framework
- langchain-experimental (>= 0.0.45): Experimental LangChain features
- langchain-openai (>= 0.1.0): OpenAI integration for LangChain
- python-dotenv (>= 1.0.0): Environment variable support
- pyvis (>= 0.3.2): Graph visualization
- streamlit (>= 1.32.0): Web UI framework
Install all required dependencies using the provided requirements.txt file:
pip install -r requirements.txt
-
Clone this repository:
git clone [repository-url] cd knowledge_graph_app_2
Note: Replace
[repository-url]
with the actual URL of this repository. -
Create a
.env
file in the root directory with your OpenAI API key:OPENAI_API_KEY=your_openai_api_key_here
To run the Streamlit app:
streamlit run app.py
This will start the application and open it in your default web browser (typically at http://localhost:8501).
- Choose your input method from the sidebar (Upload txt or Input text)
- If uploading a file, select a .txt file from your computer
- If using direct input, type or paste your text into the text area
- Click the "Generate Knowledge Graph" button
- Wait for the graph to be generated (this may take a few moments depending on the length of the text)
- Explore the interactive knowledge graph:
- Drag nodes to rearrange the graph
- Hover over nodes and edges to see additional information
- Zoom in/out using the mouse wheel
- Filter the graph for specific nodes and edges.
The application uses LangChain's experimental graph transformers with OpenAI's GPT-4o model to:
- Extract entities from the input text
- Identify relationships between these entities
- Generate a graph structure representing this information
- Visualize the graph using PyVis, a Python interface for the vis.js visualization library
This project is licensed under the MIT License - a permissive open source license that allows for free use, modification, and distribution of the software.
For more details, see the MIT License documentation.