mirror of
https://github.com/itflow-org/itflow
synced 2026-03-01 19:34:52 +00:00
Feature: Allow AI to Generate Document Templates with a prompt example Generate AD Structure Documentation, File Share etc
This commit is contained in:
@@ -135,3 +135,36 @@
|
|||||||
|
|
||||||
<?php include "admin_document_template_add_modal.php"; ?>
|
<?php include "admin_document_template_add_modal.php"; ?>
|
||||||
<?php include "footer.php"; ?>
|
<?php include "footer.php"; ?>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
|
||||||
|
$('#generateAIContent').on('click', function(){
|
||||||
|
var prompt = $('#aiPrompt').val().trim();
|
||||||
|
if(prompt === '') {
|
||||||
|
alert('Please enter a prompt.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#generateAIContent').prop('disabled', true).html('<i class="fa fa-spinner fa-spin"></i> Generating...');
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: 'post.php?ai_create_document_template', // The PHP script that calls the OpenAI API
|
||||||
|
method: 'POST',
|
||||||
|
data: { prompt: prompt },
|
||||||
|
dataType: 'html',
|
||||||
|
success: function(response) {
|
||||||
|
// Assuming you have exactly one TinyMCE instance on the page
|
||||||
|
// and it's targeting the .tinymce textarea:
|
||||||
|
tinymce.activeEditor.setContent(response);
|
||||||
|
},
|
||||||
|
error: function() {
|
||||||
|
alert('Error generating content. Please try again.');
|
||||||
|
},
|
||||||
|
complete: function() {
|
||||||
|
$('#generateAIContent').prop('disabled', false).html('<i class="fa fa-fw fa-magic mr-1"></i>Generate with AI');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|||||||
@@ -14,9 +14,26 @@
|
|||||||
<input type="text" class="form-control" name="name" placeholder="Template name">
|
<input type="text" class="form-control" name="name" placeholder="Template name">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<?php if ($config_ai_enable == 1) { ?>
|
||||||
|
<!-- Prompt for AI -->
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Enter a prompt for the type of IT documentation you want to generate:</label>
|
||||||
|
<div class="input-group mb-3">
|
||||||
|
<input type="text" class="form-control" id="aiPrompt" placeholder="e.g. 'A network troubleshooting guide for junior technicians'">
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button class="btn btn-info" type="button" id="generateAIContent">
|
||||||
|
<i class="fa fa-fw fa-magic mr-1"></i>Generate with AI
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<!-- TinyMCE Content -->
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<textarea class="form-control tinymce" name="content"></textarea>
|
<textarea class="form-control tinymce" name="content"></textarea>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type="text" class="form-control" name="description" placeholder="Enter a short summary">
|
<input type="text" class="form-control" name="description" placeholder="Enter a short summary">
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
50
post/ai.php
50
post/ai.php
@@ -126,4 +126,54 @@ if (isset($_GET['ai_ticket_summary'])) {
|
|||||||
|
|
||||||
// Print the summary
|
// Print the summary
|
||||||
echo nl2br(htmlentities($summary));
|
echo nl2br(htmlentities($summary));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_GET['ai_create_document_template'])) {
|
||||||
|
// get_ai_document_template.php
|
||||||
|
|
||||||
|
header('Content-Type: text/html; charset=UTF-8');
|
||||||
|
|
||||||
|
$prompt = $_POST['prompt'] ?? '';
|
||||||
|
|
||||||
|
// Basic validation
|
||||||
|
if(empty($prompt)){
|
||||||
|
echo "No prompt provided.";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepare prompt
|
||||||
|
$system_message = "You are a helpful IT documentation assistant. You will create a well-structured HTML template for IT documentation based on a given prompt. Include headings, subheadings, bullet points, and possibly tables for clarity. No Lorem Ipsum, use realistic placeholders and professional language.";
|
||||||
|
$user_message = "Create an HTML formatted IT documentation template based on the following request:\n\n\"$prompt\"\n\nThe template should be structured, professional, and useful for IT staff. Include relevant sections, instructions, prerequisites, and best practices.";
|
||||||
|
|
||||||
|
$post_data = [
|
||||||
|
"model" => "$config_ai_model",
|
||||||
|
"messages" => [
|
||||||
|
["role" => "system", "content" => $system_message],
|
||||||
|
["role" => "user", "content" => $user_message]
|
||||||
|
],
|
||||||
|
"temperature" => 0.7
|
||||||
|
];
|
||||||
|
|
||||||
|
$ch = curl_init();
|
||||||
|
curl_setopt($ch, CURLOPT_URL, $config_ai_url);
|
||||||
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||||
|
curl_setopt($ch, CURLOPT_POST, true);
|
||||||
|
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'Authorization: Bearer ' . $config_ai_api_key
|
||||||
|
]);
|
||||||
|
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
|
||||||
|
|
||||||
|
$response = curl_exec($ch);
|
||||||
|
if (curl_errno($ch)) {
|
||||||
|
echo "Error: " . curl_error($ch);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
curl_close($ch);
|
||||||
|
|
||||||
|
$response_data = json_decode($response, true);
|
||||||
|
$template = $response_data['choices'][0]['message']['content'] ?? "<p>No content returned from AI.</p>";
|
||||||
|
|
||||||
|
// Print the generated HTML template directly
|
||||||
|
echo $template;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user