Spaces:
Runtime error
Runtime error
# Author : Georgios Ioannou | |
# | |
# Copyright © 2024 by Georgios Ioannou | |
# Setting Up API Tokens for Hugging Face & OpenAI in Hugging Face Space | |
## 1. Create Required Tokens | |
1. **Hugging Face Token**: | |
- Log in to [Hugging Face](https://huggingface.co) | |
- Go to Settings → Access Tokens | |
- Click "New token" | |
- Name your token and select permissions | |
- Copy the token | |
2. **OpenAI API Key**: | |
- Log in to [OpenAI](https://platform.openai.com) | |
- Go to API settings | |
- Create new API key | |
- Copy the key | |
3. **MongoDB URI**: | |
- Follow [here](https://huggingface.co/spaces/GeorgiosIoannouCoder/cuny-tech-prep-tutorial-5/blob/main/mongodb_atlas_vector_search_setup.md#connection-string) | |
## 2. Add Tokens to Hugging Face Space Settings | |
1. Go INTO your Hugging Face Space settings (⚙️ icon) | |
2. Find "Variables and secrets" section | |
3. Add tokens as "New secret" one by one: | |
```toml | |
HUGGINGFACEHUB_API_TOKEN = "your_huggingface_token_here" | |
OPENAI_API_KEY = "your_openai_key_here" | |
MONGO_URI = "your_mongo_uri" | |
``` | |
## 3. Add Access Tokens in app.py | |
### NOTE: pip install python-dotenv | |
#### [python-dotenv](https://pypi.org/project/python-dotenv/) gives access to load_dotenv, find_dotenv | |
```python | |
import os | |
from dotenv import load_dotenv, find_dotenv | |
# Load environment variable(s) | |
load_dotenv(find_dotenv()) | |
HUGGINGFACEHUB_API_TOKEN = os.getenv("HUGGINGFACEHUB_API_TOKEN") | |
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") | |
MONGO_URI = os.getenv("MONGO_URI") | |
``` | |
## Alternative Method | |
```python | |
import streamlit as st | |
# Load environment variable(s) | |
HUGGINGFACEHUB_API_TOKEN = st.secrets["HUGGINGFACEHUB_API_TOKEN"] | |
OPENAI_API_KEY = st.secrets["OPENAI_API_KEY"] | |
MONGO_URI = st.secrets["MONGO_URI"] | |
``` | |
## Security Best Practices | |
- Never commit tokens to version control | |
- Add `.env` to `.gitignore` | |
- Use read-only tokens when possible | |
- Regularly refresh your API keys | |
- Set appropriate token permissions | |