\n";
// Determina si falta acceso a la generación (OpenAI por ahora).
$deshabilitado = '';
if ( ! aicc_conf_apikoai() ) {
$mensaje = __( 'You have not configured your API Key yet.', 'ai-content-creator' );
$mensaje .= ' ';
/* translators: %1$s: HTML link start, %2$s: HTML link end. */
$mensaje .= sprintf( __( 'Go to %1$shelp section%2$s and follow the procedure to create one.', 'ai-content-creator' ), '', '' );
aicc_mostrar_notificacion( $mensaje, 'error' );
$deshabilitado = ' disabled';
}
$generar = false;
$regenerar = false;
$titulo = '';
$contexto = '';
$directrices_adicionales = '';
// Generar es el proceso completo con creación de la AI.
// Regenerar es solamente mostrar el formulario para poder luego pulsar y generar.
if ( isset( $_POST['generar'] ) ) {
$generar = true;
} elseif ( isset( $_GET['accion'] ) ) {
if ( 'regenerar' === $_GET['accion'] ) {
$regenerar = true;
}
}
// Commas, quotes and symbols are welcome, will use wp_unslash to allow them.
// Database usage.
// Tanto al generar como al regenerar, hay datos previos considerable para cargar en el form.
if ( $generar ) {
if ( isset( $_POST['titulo'] ) ) {
// Aquí perdemos la posibilidad de títulos como "¿Debo utilizar o ?".
// Revertir las magic_quotes, que siempre actúan en WP.
$titulo = sanitize_text_field( wp_unslash( $_POST['titulo'] ) );
// Sanea y valida el título para determinar que la generación es válida.
$titulo = aicc_sanea_titulo( $titulo );
if ( ! aicc_valida_titulo( $titulo ) ) {
$generar = false;
}
}
if ( isset( $_POST['contexto'] ) ) {
$contexto = sanitize_textarea_field( wp_unslash( $_POST['contexto'] ) );
if ( ! aicc_sanea_contexto( $contexto ) ) {
$generar = false;
}
}
if ( isset( $_POST['directrices_adicionales'] ) ) {
$directrices_adicionales = sanitize_textarea_field( wp_unslash( $_POST['directrices_adicionales'] ) );
if ( ! aicc_sanea_directrices_adicionales( $directrices_adicionales ) ) {
$generar = false;
}
}
}
if ( $regenerar ) {
/*
Cargar ID o indicar error.
Cargar cada campo que exista.
*/
if ( isset( $_GET['id'] ) ) {
$id_articulo = sanitize_text_field( wp_unslash( $_GET['id'] ) );
$id_articulo = aicc_valida_id_articulo( $id_articulo );
$aicc_generacion_anterior = new AIccGeneracion();
if ( $aicc_generacion_anterior->cargar( $id_articulo ) ) {
$titulo = $aicc_generacion_anterior->titulo();
$contexto = $aicc_generacion_anterior->contexto();
$directrices_adicionales = $aicc_generacion_anterior->directrices_adicionales();
} else {
aicc_mostrar_notificacion( __( 'Unable to load the specified article.', 'ai-content-creator' ), 'error' );
}
} else {
aicc_mostrar_notificacion( __( 'You have not specified based on which article you want to create another one.', 'ai-content-creator' ), 'error' );
}
}
echo wp_kses( aicc_formulario_crear_html( $titulo, $contexto, $directrices_adicionales, $deshabilitado ), aicc_permitidos_kses_formulario() );
echo aicc_imagen_espera_html();
?>
';
$modelo = aicc_conf_modelo();
$aicc_generacion = new AIccGeneracion();
$aicc_generacion = aicc_generar_contenido( $modelo, $titulo, $contexto, $directrices_adicionales );
// Al terminar de generar, oculta la animación de nuevo.
?>
mostrar_errores_html();
if ( ! $aicc_generacion->contenido() ) {
aicc_mostrar_notificacion( __( 'Something went wrong while trying to generate the content.', 'ai-content-creator' ), 'warning' );
} else {
esc_html_e( 'Content', 'ai-content-creator' );
echo ":\n";
$aicc_generacion->mostrar_iframe_contenido_html();
echo $aicc_generacion->bloque_operaciones_html();
}
echo '';
}
?>
' . "\n";
$html .= '' . "\n";
return $html;
}
/** Prompt para continuar un artículo con un título dado.
*
* @param {string} $titulo - El título del artículo.
* @return {string} La cadena de texto formateada con el título.
*/
function aicc_prompt_continuar( $titulo ) {
$prompt = __( 'Title', 'ai-content-creator' ) . ": $titulo\r\n";
$prompt = "
';
$prompt .= $inicio_respuesta;
return $prompt;
}
/** Prompt para continuar un artículo con un título dado paso a paso.
*
* @param {string} $titulo - El título del artículo.
* @return {string} La cadena de texto formateada con el título y la frase "Vamos paso a paso".
*/
function aicc_prompt_continuar_paso_a_paso( $titulo ) {
// Zero Shot Chain of Thought.
$prompt = "
$titulo
\r\n";
$inicio_respuesta = '';
/* translators: This is part of a prompt to an AI. */
$inicio_respuesta .= '
' . __( "Let's go step by step", 'ai-content-creator' ) . ".
\r\n
";
$prompt .= $inicio_respuesta;
return $prompt;
}
/** Prompt para solicitar la creación de un artículo con título, contexto y directrices adicionales.
*
* @param {string} $titulo - El título del artículo.
* @param {string} $contexto - El contexto del tema que se abordará (opcional).
* @param {string} $directrices_adicionales - Directrices adicionales para el artículo (opcional).
* @return {string} La cadena de texto formateada con el título, contexto y directrices adicionales.
*/
function aicc_prompt_solicitar( $titulo, $contexto = '', $directrices_adicionales = '' ) {
// Caracteristicas adicionales a indicar en el prompt.
$caracteristicas_adicionales = array();
$separador = "\n•";
/** Opciones deshabilitadas.
$longitud = aicc_conf_longitud();
$caracteristicas_adicionales[] = "Tener una longitud de $longitud palabras.";
$caracteristicas_adicionales[] = 'Redactado en idioma ' . aicc_nombre_idioma( aicc_conf_idioma() ) . '.';
$caracteristicas_adicionales[] = 'Imprescindible que sea en formato HTML.';
$caracteristicas_adicionales[] = "Asegúrate de que el contenido del artículo esté relacionado únicamente con el tema \"$titulo\".";
$caracteristicas_adicionales[] = 'Inícialo con un índice basado en los títulos y subtítulos.';
*/
if ( aicc_conf_tablacontenidos() ) {
/* translators: This is part of a prompt to an AI. */
$caracteristicas_adicionales[] = __( 'Place a table of contents based on the titles and subtitles after a first introduction paragraph.', 'ai-content-creator' );
}
/* translators: This is part of a prompt to an AI. */
$caracteristicas_adicionales[] = __( 'Make sure to include the necessary tags to structure the content into main titles and subtitles using the
and
tags, respectively.', 'ai-content-creator' );
/* translators: This is part of a prompt to an AI. */
$caracteristicas_adicionales[] = __( 'Also use the
and
tags to create lists and and
to enumerate necessary steps. Use the
tag to separate content into paragraphs, to indicate line breaks and any other convenient tags.', 'ai-content-creator' );
/* translators: This is part of a prompt to an AI. */
$caracteristicas_adicionales[] = __( 'Never use