Konversationen eingefügt
This commit is contained in:
5
api.php
5
api.php
@@ -5,11 +5,10 @@ require_once 'config.php';
|
|||||||
// Check if a POST request is sent
|
// Check if a POST request is sent
|
||||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
$input = json_decode(file_get_contents('php://input'), true);
|
$input = json_decode(file_get_contents('php://input'), true);
|
||||||
$user_message = $input['message'];
|
$conversation = $input['conversation'];
|
||||||
|
|
||||||
// Prepare the command to execute the Python script
|
// Prepare the command to execute the Python script
|
||||||
// Note: Make sure `python` or `python3` is properly configured in your system's PATH.
|
$command = escapeshellcmd("python3 assistant.py '" . json_encode($conversation) . "'");
|
||||||
$command = escapeshellcmd("python3 assistant.py '$user_message'");
|
|
||||||
$output = shell_exec($command);
|
$output = shell_exec($command);
|
||||||
|
|
||||||
// Decode the response from Python script
|
// Decode the response from Python script
|
||||||
|
|||||||
24
assistant.py
24
assistant.py
@@ -1,20 +1,21 @@
|
|||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
from openai import OpenAI
|
|
||||||
import time
|
import time
|
||||||
|
from openai import OpenAI
|
||||||
|
|
||||||
def get_assistant_response(user_message):
|
def get_assistant_response(conversation):
|
||||||
client = OpenAI(api_key='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')
|
client = OpenAI(api_key='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')
|
||||||
|
|
||||||
# Thread erstellen
|
# Thread erstellen
|
||||||
thread = client.beta.threads.create()
|
thread = client.beta.threads.create()
|
||||||
|
|
||||||
# Nachricht zum Thread hinzufügen
|
# Alle Nachrichten zum Thread hinzufügen
|
||||||
message = client.beta.threads.messages.create(
|
for message in conversation:
|
||||||
thread_id=thread.id,
|
client.beta.threads.messages.create(
|
||||||
role="user",
|
thread_id=thread.id,
|
||||||
content=user_message
|
role=message['role'],
|
||||||
)
|
content=message['content']
|
||||||
|
)
|
||||||
|
|
||||||
# Run mit dem Assistant starten
|
# Run mit dem Assistant starten
|
||||||
run = client.beta.threads.runs.create(
|
run = client.beta.threads.runs.create(
|
||||||
@@ -39,7 +40,6 @@ def get_assistant_response(user_message):
|
|||||||
return {"response": assistant_message}
|
return {"response": assistant_message}
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
if len(sys.argv) > 1:
|
conversation = json.loads(sys.argv[1])
|
||||||
user_message = sys.argv[1]
|
response = get_assistant_response(conversation)
|
||||||
response = get_assistant_response(user_message)
|
print(json.dumps(response))
|
||||||
print(json.dumps(response))
|
|
||||||
@@ -14,6 +14,7 @@
|
|||||||
<input type="text" id="user-input" placeholder="Geben Sie Ihre Nachricht ein..." required>
|
<input type="text" id="user-input" placeholder="Geben Sie Ihre Nachricht ein..." required>
|
||||||
<button type="submit">Senden</button>
|
<button type="submit">Senden</button>
|
||||||
</form>
|
</form>
|
||||||
|
<button id="reset-button">Konversation zurücksetzen</button>
|
||||||
</div>
|
</div>
|
||||||
<script src="script.js"></script>
|
<script src="script.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
87
script.js
87
script.js
@@ -2,88 +2,45 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
const chatForm = document.getElementById('chat-form');
|
const chatForm = document.getElementById('chat-form');
|
||||||
const userInput = document.getElementById('user-input');
|
const userInput = document.getElementById('user-input');
|
||||||
const chatMessages = document.getElementById('chat-messages');
|
const chatMessages = document.getElementById('chat-messages');
|
||||||
|
const resetButton = document.getElementById('reset-button');
|
||||||
let threadId; // Variable to store the thread ID
|
let conversation = [];
|
||||||
|
|
||||||
chatForm.addEventListener('submit', async (e) => {
|
chatForm.addEventListener('submit', async (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
const message = userInput.value.trim();
|
const message = userInput.value.trim();
|
||||||
if (message) {
|
if (message) {
|
||||||
addMessage('User', message);
|
addMessage('User', message);
|
||||||
|
conversation.push({ role: 'user', content: message });
|
||||||
userInput.value = '';
|
userInput.value = '';
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!threadId) {
|
const response = await fetch('api.php', {
|
||||||
// Create a new thread
|
method: 'POST',
|
||||||
threadId = await createThread(message);
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
body: JSON.stringify({ conversation: conversation }),
|
||||||
|
});
|
||||||
|
|
||||||
|
if (response.ok) {
|
||||||
|
const data = await response.json();
|
||||||
|
addMessage('Assistant', data.response);
|
||||||
|
conversation.push({ role: 'assistant', content: data.response });
|
||||||
} else {
|
} else {
|
||||||
// Post a message to the existing thread
|
throw new Error('Fehler bei der API-Anfrage');
|
||||||
await postMessageToThread(threadId, message);
|
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error:', error);
|
console.error('Fehler:', error);
|
||||||
addMessage('System', 'Es ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.');
|
addMessage('System', 'Es ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
async function createThread(message) {
|
resetButton.addEventListener('click', () => {
|
||||||
try {
|
conversation = [];
|
||||||
const response = await fetch('https://api.openai.com/v1/threads', {
|
chatMessages.innerHTML = '';
|
||||||
method: 'POST',
|
addMessage('System', 'Die Konversation wurde zurückgesetzt.');
|
||||||
headers: {
|
});
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'Authorization': `Bearer ${OPENAI_API_KEY}`
|
|
||||||
},
|
|
||||||
body: JSON.stringify({
|
|
||||||
"messages": [
|
|
||||||
{
|
|
||||||
"role": "user",
|
|
||||||
"content": message
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
if (response.ok) {
|
|
||||||
const data = await response.json();
|
|
||||||
addMessage('Assistant', data.choices[0].message.content);
|
|
||||||
return data.id;
|
|
||||||
} else {
|
|
||||||
throw new Error('Fehler bei der Erstellung des Threads');
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
async function postMessageToThread(threadId, message) {
|
|
||||||
try {
|
|
||||||
const response = await fetch(`https://api.openai.com/v1/threads/${threadId}/messages`, {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'Authorization': `Bearer ${OPENAI_API_KEY}`
|
|
||||||
},
|
|
||||||
body: JSON.stringify({
|
|
||||||
"messages": [
|
|
||||||
{
|
|
||||||
"role": "user",
|
|
||||||
"content": message
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
if (response.ok) {
|
|
||||||
const data = await response.json();
|
|
||||||
addMessage('Assistant', data.choices[0].message.content);
|
|
||||||
} else {
|
|
||||||
throw new Error('Fehler beim Posten der Nachricht');
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function addMessage(sender, message) {
|
function addMessage(sender, message) {
|
||||||
const messageElement = document.createElement('div');
|
const messageElement = document.createElement('div');
|
||||||
|
|||||||
15
styles.css
15
styles.css
@@ -52,3 +52,18 @@ button {
|
|||||||
button:hover {
|
button:hover {
|
||||||
background-color: #0056b3;
|
background-color: #0056b3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#reset-button {
|
||||||
|
margin-top: 10px;
|
||||||
|
padding: 10px 20px;
|
||||||
|
font-size: 16px;
|
||||||
|
background-color: #dc3545;
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
#reset-button:hover {
|
||||||
|
background-color: #c82333;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user