Konversationen eingefügt

This commit is contained in:
2024-11-19 10:25:02 +01:00
parent a41ebc2e98
commit 2a31ef1c19
5 changed files with 53 additions and 81 deletions

View File

@@ -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

View File

@@ -1,19 +1,20 @@
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:
client.beta.threads.messages.create(
thread_id=thread.id, thread_id=thread.id,
role="user", role=message['role'],
content=user_message content=message['content']
) )
# Run mit dem Assistant starten # Run mit dem Assistant starten
@@ -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))

View File

@@ -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>

View File

@@ -2,89 +2,46 @@ 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');
messageElement.innerHTML = `<strong>${sender}:</strong> ${message}`; messageElement.innerHTML = `<strong>${sender}:</strong> ${message}`;

View File

@@ -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;
}