Sanchit Verma commited on
Commit
1b460ab
Β·
1 Parent(s): 37ececc

Add environment configuration, update README, and implement core functionality

Browse files

- Create .env file for API keys and model configurations
- Update .gitignore to exclude .env file
- Revise README for clarity and add local run instructions
- Implement OpenAI and Ollama query functions in utils.py
- Establish response generation logic based on selected model

Files changed (6) hide show
  1. .env +4 -0
  2. .gitignore +1 -0
  3. README.md +14 -16
  4. app.py +1 -22
  5. pyproject.toml +6 -1
  6. utils.py +44 -0
.env CHANGED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ OPENAI_API_KEY=sk-xxxxx
2
+ OPENAI_MODEL=gpt-4o
3
+ USE_OLLAMA=false
4
+ OLLAMA_MODEL=llama3
.gitignore CHANGED
@@ -19,6 +19,7 @@ dist/
19
  downloads/
20
  eggs/
21
  .eggs/
 
22
  lib/
23
  lib64/
24
  parts/
 
19
  downloads/
20
  eggs/
21
  .eggs/
22
+ .env
23
  lib/
24
  lib64/
25
  parts/
README.md CHANGED
@@ -1,22 +1,20 @@
1
  # πŸ€– LLMates – Chat with Custom AI Personas
2
 
3
- LLMates is a minimalist, persona-driven chatbot interface built using **Gradio** and **OpenAI's GPT-3.5**.
4
- It lets you switch between assistant "personalities" like a **Python Tutor**, **Regex Helper**, or **Startup Coach**, all powered by curated prompt templates.
5
 
6
- ## 🌟 Features
7
- - Predefined assistant personas (via prompt injection)
8
- - Seamless Gradio chat interface with session memory
9
- - Easy to extend with new roles or APIs
10
- - Clean and modular code
11
 
12
- ## πŸ”§ Stack
13
  - Gradio UI
14
- - OpenAI Chat API (GPT-4.1)
15
- - Python + dotenv
16
 
17
- ## πŸ“¦ Coming Soon
18
- - Deploy on Hugging Face Spaces
19
- - Add real-time persona switching
20
- - Save/export chat sessions
21
-
22
- ---
 
1
  # πŸ€– LLMates – Chat with Custom AI Personas
2
 
3
+ LLMates is a minimal, modular chatbot app where you can switch between assistant personas powered by LLMs.
4
+ It supports OpenAI (e.g. GPT-4o), or free alternatives like **Ollama** (LLaMA3, Mistral) or Hugging Face.
5
 
6
+ ## πŸ’‘ Personas
7
+ - Python Tutor
8
+ - Regex Helper
9
+ - Motivational Coach
10
+ - Startup Advisor
11
 
12
+ ## βš™οΈ Stack
13
  - Gradio UI
14
+ - OpenAI / Ollama / HF model backend
15
+ - Modular Python
16
 
17
+ ## πŸ§ͺ Run Locally
18
+ ```bash
19
+ pip install -r requirements.txt
20
+ python app.py
 
 
app.py CHANGED
@@ -1,23 +1,2 @@
1
- # -*- coding: utf-8 -*-
2
 
3
- """
4
- llmates.py
5
- This module contains the main entry point for the llmates program.
6
- It initializes the application and displays a welcome message.
7
- """
8
-
9
-
10
- def main():
11
- """
12
- The main entry point for the llmates program.
13
- This function initializes the llmates application and displays a welcome message.
14
- Returns:
15
- None
16
- """
17
-
18
- print("Hello from llmates!")
19
-
20
-
21
- if __name__ == "__main__":
22
- X = "Hello from the llama!"
23
- main()
 
1
+ # This is the file for the gradio app
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
pyproject.toml CHANGED
@@ -4,4 +4,9 @@ version = "0.1.0"
4
  description = "Add your description here"
5
  readme = "README.md"
6
  requires-python = ">=3.9"
7
- dependencies = []
 
 
 
 
 
 
4
  description = "Add your description here"
5
  readme = "README.md"
6
  requires-python = ">=3.9"
7
+ dependencies = [
8
+ "dotenv>=0.9.9",
9
+ "gradio>=4.44.1",
10
+ "openai>=1.82.0",
11
+ "requests>=2.32.3",
12
+ ]
utils.py CHANGED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from config import OPENAI_API_KEY, OPENAI_MODEL, USE_OLLAMA, OLLAMA_MODEL
2
+ import requests
3
+ import openai
4
+ import os
5
+
6
+ openai.api_key = OPENAI_API_KEY
7
+
8
+ def query_openai(messages):
9
+ try:
10
+ response = openai.ChatCompletion.create(
11
+ model=OPENAI_MODEL,
12
+ messages=messages
13
+ )
14
+ return response["choices"][0]["message"]["content"]
15
+ except Exception as e:
16
+ return f"⚠️ OpenAI Error: {e}"
17
+
18
+ def query_ollama(prompt):
19
+ try:
20
+ res = requests.post(
21
+ "http://localhost:11434/api/generate",
22
+ json={"model": OLLAMA_MODEL, "prompt": prompt}
23
+ )
24
+ return res.json()["response"]
25
+ except Exception as e:
26
+ return f"⚠️ Ollama Error: {e}"
27
+
28
+ def generate_response(persona, user_input, history):
29
+ if USE_OLLAMA:
30
+ full_prompt = f"{persona}\n\n"
31
+ for u, b in history:
32
+ full_prompt += f"User: {u}\nBot: {b}\n"
33
+ full_prompt += f"User: {user_input}\nBot:"
34
+ reply = query_ollama(full_prompt)
35
+ else:
36
+ messages = [{"role": "system", "content": persona}]
37
+ for u, b in history:
38
+ messages.append({"role": "user", "content": u})
39
+ messages.append({"role": "assistant", "content": b})
40
+ messages.append({"role": "user", "content": user_input})
41
+ reply = query_openai(messages)
42
+
43
+ history.append((user_input, reply))
44
+ return history, history