File size: 4,987 Bytes
6d7992b
06cb2a3
 
 
 
6d7992b
06cb2a3
6d7992b
 
 
06cb2a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
---
title: IFX-sandbox
emoji: 🏈
colorFrom: red
colorTo: gray
sdk: gradio
app_file: gradio_app.py
pinned: false
---

# 49ers FanAI Hub - Gradio Version

This is a Gradio-based chatbot application that provides information about the San Francisco 49ers, players, games, and fans. The application uses LangChain, Neo4j, and Zep for memory management.

## Features

- Chat interface for asking questions about the 49ers
- Integration with Neo4j graph database for structured data queries
- Vector search for finding game summaries
- Memory management with Zep for conversation history
- Game Recap component that displays visual information for game-related queries

## Prerequisites

- Python 3.9+
- Neo4j database (local or Aura)
- OpenAI API key
- Zep API key

## Installation

1. Clone the repository
2. Install the required packages:

```bash
pip install -r gradio_requirements.txt
```

3. Set up your environment variables:
   - Copy `.env.example` to `.env` in the root directory
   - Fill in your API keys and credentials

Example `.env` file:
```
OPENAI_API_KEY=your_openai_api_key
OPENAI_MODEL=gpt-4o
AURA_CONNECTION_URI=your_neo4j_uri
AURA_USERNAME=your_neo4j_username
AURA_PASSWORD=your_neo4j_password
ZEP_API_KEY=your_zep_api_key
```

> **IMPORTANT**: Never commit your actual API keys or credentials to the repository. The `.env` files are included in `.gitignore` to prevent accidental exposure of sensitive information.

## Running the Application

To run the Gradio application:

```bash
python gradio_app.py
```

This will start the Gradio server and open the application in your default web browser.

## Project Structure

- `gradio_app.py`: Main Gradio application
- `gradio_agent.py`: Agent implementation using LangChain for Gradio
- `gradio_graph.py`: Neo4j graph connection for Gradio
- `gradio_llm.py`: Language model configuration for Gradio
- `gradio_utils.py`: Utility functions for Gradio
- `prompts.py`: System prompts for the agent
- `tools/`: Specialized tools for the agent
  - `cypher.py`: Tool for Cypher queries to Neo4j
  - `vector.py`: Tool for vector search of game summaries
  - `game_recap.py`: Tool for game recaps with visual component
- `components/`: UI components
  - `game_recap_component.py`: Game recap visual component
- `data/`: Data files and scripts
  - Various scripts and CSV files with 49ers data
- `docs/`: Documentation
  - `requirements.md`: Detailed product and technical requirements
  - `game_recap_implementation_instructions.md`: Implementation details for the game recap feature

## Game Recap Component

The Game Recap feature provides visual information about games in addition to text-based summaries. When a user asks about a specific game, the application:

1. Identifies the game being referenced
2. Retrieves game data from the Neo4j database
3. Displays a visual component with team logos, scores, and other game information
4. Generates a text summary in the chat

Note: As mentioned in `docs/game_recap_implementation_instructions.md`, this component is still a work in progress. Currently, it displays above the chat window rather than embedded within chat messages.

## Security Considerations

This repository includes:
- `.gitignore` file to prevent committing sensitive information
- `.env.example` files showing required environment variables without actual values
- No hardcoded API keys or credentials in the code

Before pushing to a public repository:
1. Ensure all sensitive information is in `.env` files (which are ignored by git)
2. Verify no API keys or credentials are hardcoded in any files
3. Check that large data files or binary files are properly ignored if needed

## Usage

1. Start the application
2. Ask questions about the 49ers, such as:
   - "Who are the current players on the 49ers roster?"
   - "Tell me about the 49ers game against the Chiefs"
   - "Which fan communities have the most members?"
   - "Show me the recap of the 49ers vs. Vikings game"

The application will use the appropriate tools to answer your questions based on the data in the Neo4j database.

## Deployment

This application has been deployed to HuggingFace Spaces and is publicly available at: 
[https://huggingface.co/spaces/aliss77777/ifx-sandbox](https://huggingface.co/spaces/aliss77777/ifx-sandbox)

### Deployment Steps
1. Used Gradio's built-in deployment feature: `gradio deploy --app-file gradio_app.py --title "49ers FanAI Hub"`
2. Uploaded environment variables securely as Secrets in the HuggingFace Space
3. Verified all API connections and data access on the deployed version

The deployment process automatically handles:
- Code upload to HuggingFace Spaces
- Installing dependencies from requirements.txt
- Building and serving the Gradio application

### Final Checks
- Verified UI rendering and responsiveness
- Confirmed data accuracy and Neo4j connection
- Tested all features: chat, graph queries, and game recap functionality
- Documented any deployment-specific issues or limitations