Skip to content

Commit 1bcbb73

Browse files
committed
Add Language Learning Chatbot project (Issue #90)
1 parent 9e69590 commit 1bcbb73

File tree

4 files changed

+102
-0
lines changed

4 files changed

+102
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Language Learning Chatbot
2+
3+
A conversational AI language learning companion using OpenAI API.
4+
5+
## Features
6+
- Chatbot for language practice and learning
7+
- Personalized feedback
8+
9+
## Usage
10+
1. Install dependencies:
11+
```bash
12+
pip install flask openai
13+
```
14+
2. Set your OpenAI API key as an environment variable:
15+
```bash
16+
export OPENAI_API_KEY=sk-...
17+
```
18+
3. Run the Flask app:
19+
```bash
20+
python app.py
21+
```
22+
4. Open your browser at `http://localhost:5000`.
23+
24+
## Requirements
25+
- Python 3.x
26+
- Flask
27+
- OpenAI API key
28+
29+
## License
30+
MIT

Language_Learning_Chatbot/app.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"""
2+
Language Learning Chatbot (Issue #90)
3+
Minimal Flask backend + HTML/JS frontend using OpenAI API
4+
"""
5+
from flask import Flask, request, jsonify, send_from_directory
6+
import os
7+
import openai
8+
9+
app = Flask(__name__)
10+
openai.api_key = os.getenv("OPENAI_API_KEY", "sk-...") # Replace with your key or set as env var
11+
12+
@app.route("/api/chat", methods=["POST"])
13+
def chat():
14+
user_msg = request.json.get("message", "")
15+
prompt = f"You are a helpful language learning assistant. Help the user practice and learn languages.\nUser: {user_msg}\nAI:"
16+
response = openai.Completion.create(
17+
engine="text-davinci-003",
18+
prompt=prompt,
19+
max_tokens=100,
20+
temperature=0.7
21+
)
22+
reply = response.choices[0].text.strip()
23+
return jsonify({"reply": reply})
24+
25+
@app.route("/")
26+
def index():
27+
return send_from_directory(".", "chatbot.html")
28+
29+
if __name__ == "__main__":
30+
app.run(debug=True)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Language Learning Chatbot</title>
6+
<style>
7+
body { font-family: Arial, sans-serif; margin: 40px; }
8+
.container { max-width: 600px; margin: auto; }
9+
#chat { border: 1px solid #ccc; padding: 10px; height: 300px; overflow-y: auto; margin-bottom: 10px; }
10+
input, button { margin: 5px; }
11+
</style>
12+
</head>
13+
<body>
14+
<div class="container">
15+
<h2>Language Learning Chatbot</h2>
16+
<div id="chat"></div>
17+
<input type="text" id="userInput" placeholder="Type your message..." />
18+
<button onclick="sendMessage()">Send</button>
19+
</div>
20+
<script>
21+
function appendMessage(sender, text) {
22+
const chat = document.getElementById('chat');
23+
chat.innerHTML += `<b>${sender}:</b> ${text}<br/>`;
24+
chat.scrollTop = chat.scrollHeight;
25+
}
26+
function sendMessage() {
27+
const input = document.getElementById('userInput');
28+
const msg = input.value;
29+
if (!msg) return;
30+
appendMessage('You', msg);
31+
input.value = '';
32+
fetch('/api/chat', {
33+
method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({message: msg})
34+
}).then(r => r.json()).then(data => {
35+
appendMessage('AI', data.reply);
36+
});
37+
}
38+
</script>
39+
</body>
40+
</html>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
flask
2+
openai

0 commit comments

Comments
 (0)