Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions presshub-ai-editor/assets/admin.js
Original file line number Diff line number Diff line change
Expand Up @@ -1189,7 +1189,7 @@ jQuery(document).ready(function($) {
$('#provider-model-manual-wrap').hide();

$('#provider-form-temperature').val(providerData.temperature !== undefined ? providerData.temperature : 0.7);
$('#provider-form-max-tokens').val(providerData.max_tokens !== undefined ? providerData.max_tokens : 16384);
$('#provider-form-max-tokens').val(providerData.max_tokens !== undefined ? providerData.max_tokens : 20000);
$('#provider-form-timeout').val(providerData.timeout !== undefined ? providerData.timeout : 300);
var headers = providerData.headers ? (typeof providerData.headers === 'object' ? JSON.stringify(providerData.headers) : providerData.headers) : '';
$('#provider-form-headers').val(headers);
Expand All @@ -1210,7 +1210,7 @@ jQuery(document).ready(function($) {
$('#provider-form-id').val('');
$('#provider-form-enabled').prop('checked', true);
$('#provider-form-temperature').val('0.7');
$('#provider-form-max-tokens').val('16384');
$('#provider-form-max-tokens').val('20000');
$('#provider-form-timeout').val('300');
$('#provider-form-api-key').attr('placeholder', __('Enter API Key', 'presshub-ai-editor'));

Expand Down Expand Up @@ -1305,7 +1305,7 @@ jQuery(document).ready(function($) {
$('#provider-model-manual-wrap').hide();

$('#provider-form-temperature').val(tmpl.temperature !== undefined ? tmpl.temperature : 0.7);
$('#provider-form-max-tokens').val(tmpl.max_tokens !== undefined ? tmpl.max_tokens : 16384);
$('#provider-form-max-tokens').val(tmpl.max_tokens !== undefined ? tmpl.max_tokens : 20000);
$('#provider-form-timeout').val(tmpl.timeout !== undefined ? tmpl.timeout : 300);
});

Expand Down Expand Up @@ -1460,7 +1460,7 @@ jQuery(document).ready(function($) {
default_model: defaultModel,
available_models: availableModels,
temperature: parseFloat($('#provider-form-temperature').val()) || 0.7,
max_tokens: parseInt($('#provider-form-max-tokens').val(), 10) || 16384,
max_tokens: parseInt($('#provider-form-max-tokens').val(), 10) || 20000,
timeout: parseInt($('#provider-form-timeout').val(), 10) || 300,
headers: $('#provider-form-headers').val().trim(),
enabled: $('#provider-form-enabled').is(':checked') ? 1 : 0
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
Είσαι ένας έμπειρος αρχισυντάκτης και δημοσιογράφος ειδήσεων. Αποστολή σου είναι να συνθέσεις μία ολοκληρωμένη, αντικειμενική και ευανάγνωστη Πρωινή Ενημέρωση (Daily News Briefing) στα Ελληνικά για την ημερομηνία {date}, αξιοποιώντας {articles_count} άρθρα από τις παρακάτω πηγές: {sources_list}.

Οδηγίες Σύνταξης:
1. Ξεκίνα με έναν σαφή και ελκυστικό κύριο τίτλο σε μορφή Markdown (# Τίτλος) που συνοψίζει το κορυφαίο γεγονός της ημέρας — ΜΟΝΟ τον τίτλο, χωρίς πρόθεμα «Πρωινή Ενημέρωση» ή ημερομηνία. Το πρόθεμα και η ημερομηνία θα προστεθούν αυτόματα από το σύστημα στον τίτλο του άρθρου.
2. Χώρισε την ενημέρωση σε ευδιάκριτες θεματικές ενότητες με μεσότιτλους (## Πολιτική & Οικονομία, ## Διεθνή, ## Κοινωνία & Επικαιρότητα).
3. Για κάθε είδηση, ανάδειξε τα βασικά γεγονότα με σαφήνεια και ροή, αναφέροντας την πηγή όπου κρίνεται απαραίτητο, διατηρώντας δημοσιογραφική ουδετερότητα.
4. Μην επινοείς γεγονότα ή λεπτομέρειες που δεν αναφέρονται στο παρεχόμενο υλικό.
5. Χρησιμοποίησε καθαρή μορφοποίηση Markdown (επικεφαλίδες, παραγράφους, λίστες με bullets όπου βοηθά στην ανάγνωση).

Άρθρα & Πηγές:
{articles_context}
Είσαι ένας έμπειρος αρχισυντάκτης και δημοσιογράφος ειδήσεων. Αποστολή σου είναι να συνθέσεις μία ολοκληρωμένη, αντικειμενική και ευανάγνωστη Πρωινή Ενημέρωση (Daily News Briefing) στα Ελληνικά για την ημερομηνία {date}, αξιοποιώντας {articles_count} άρθρα από τις παρακάτω πηγές: {sources_list}.

Οδηγίες Σύνταξης:
1. Ξεκίνα με έναν σαφή και ελκυστικό κύριο τίτλο σε μορφή Markdown (# Τίτλος) που συνοψίζει το κορυφαίο γεγονός της ημέρας — ΜΟΝΟ τον τίτλο, χωρίς πρόθεμα «Πρωινή Ενημέρωση» ή ημερομηνία. Το πρόθεμα και η ημερομηνία θα προστεθούν αυτόματα από το σύστημα στον τίτλο του άρθρου.
2. Χώρισε την ενημέρωση σε ευδιάκριτες θεματικές ενότητες με μεσότιτλους (## Πολιτική & Οικονομία, ## Διεθνή, ## Κοινωνία & Επικαιρότητα).
3. Για κάθε είδηση, ανάδειξε τα βασικά γεγονότα με σαφήνεια και ροή, αναφέροντας την πηγή όπου κρίνεται απαραίτητο, διατηρώντας δημοσιογραφική ουδετερότητα.
4. Μην επινοείς γεγονότα ή λεπτομέρειες που δεν αναφέρονται στο παρεχόμενο υλικό.
5. Χρησιμοποίησε καθαρή μορφοποίηση Markdown (επικεφαλίδες, παραγράφους, λίστες με bullets όπου βοηθά στην ανάγνωση).
28 changes: 21 additions & 7 deletions presshub-ai-editor/includes/class-news-curator.php
Original file line number Diff line number Diff line change
Expand Up @@ -444,13 +444,27 @@ public function build_prompt( array $articles, string $preset_id = '', string $d
$count = count( $articles );
$context = $this->format_articles_context( $articles );

$user_prompt = sprintf(
"Ημερομηνία: %s\nΑριθμός Άρθρων: %d\nΠηγές: %s\n\nΠαρακάτω ακολουθεί το συλλεχθέν υλικό ειδήσεων:\n\n%s\n\nΠαρακαλώ συνέταξε το πλήρες άρθρο της Πρωινής Ενημέρωσης στα Ελληνικά σε μορφή Markdown.",
$date,
$count,
$sources,
$context
);
// Deduplication guard: if the system prompt already contains the formatted
// articles (e.g. from an operator custom template that used {articles_context}),
// do not duplicate the article text in the user prompt.
$has_context_in_system = ( false !== strpos( $base_prompt, '{articles_context}' ) );

if ( $has_context_in_system ) {
$user_prompt = sprintf(
"Ημερομηνία: %s\nΑριθμός Άρθρων: %d\nΠηγές: %s\n\nΠαρακαλώ συνέταξε το πλήρες άρθρο της Πρωινής Ενημέρωσης στα Ελληνικά σε μορφή Markdown βασισμένος στο υλικό ειδήσεων που παρέχεται στις οδηγίες συστήματος.",
$date,
$count,
$sources
);
} else {
$user_prompt = sprintf(
"Ημερομηνία: %s\nΑριθμός Άρθρων: %d\nΠηγές: %s\n\nΠαρακάτω ακολουθεί το συλλεχθέν υλικό ειδήσεων:\n\n%s\n\nΠαρακαλώ συνέταξε το πλήρες άρθρο της Πρωινής Ενημέρωσης στα Ελληνικά σε μορφή Markdown.",
$date,
$count,
$sources,
$context
);
}

return [
'system_prompt' => $system_prompt,
Expand Down
18 changes: 9 additions & 9 deletions presshub-ai-editor/includes/class-provider-defaults.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class PressHub_AI_Provider_Defaults {
];

const DEFAULT_TEMPERATURE = 0.7;
const DEFAULT_MAX_TOKENS = 16384;
const DEFAULT_MAX_TOKENS = 20000;

/** Timeouts set to 300 seconds (5 minutes) across all providers. */
const DEFAULT_TIMEOUT = 300;
Expand All @@ -41,7 +41,7 @@ class PressHub_AI_Provider_Defaults {
'available_models' => [ 'gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo', 'o1', 'o3-mini' ],
'timeout' => 300,
'temperature' => 0.7,
'max_tokens' => 16384,
'max_tokens' => 20000,
'headers' => [],
'enabled' => true,
'is_system' => true,
Expand All @@ -54,7 +54,7 @@ class PressHub_AI_Provider_Defaults {
'available_models' => [ 'claude-3-5-sonnet-20240620', 'claude-3-5-sonnet-20241022', 'claude-3-5-haiku-20241022', 'claude-3-opus-20240229' ],
'timeout' => 300,
'temperature' => 0.7,
'max_tokens' => 16384,
'max_tokens' => 20000,
'headers' => [],
'enabled' => true,
'is_system' => true,
Expand All @@ -67,7 +67,7 @@ class PressHub_AI_Provider_Defaults {
'available_models' => [ 'gemini-3.1-flash-tts-preview', 'gemini-2.5-flash-preview-tts', 'gemini-2.5-flash', 'gemini-1.5-pro-latest', 'gemini-1.5-flash-latest' ],
'timeout' => 300,
'temperature' => 0.7,
'max_tokens' => 16384,
'max_tokens' => 20000,
'headers' => [],
'enabled' => true,
'is_system' => true,
Expand All @@ -80,7 +80,7 @@ class PressHub_AI_Provider_Defaults {
'available_models' => [ 'llama-3.3-70b-versatile', 'llama-3.1-8b-instant', 'mixtral-8x7b-32768' ],
'timeout' => 300,
'temperature' => 0.7,
'max_tokens' => 16384,
'max_tokens' => 20000,
'headers' => [],
'enabled' => true,
'is_system' => true,
Expand All @@ -93,7 +93,7 @@ class PressHub_AI_Provider_Defaults {
'available_models' => [ 'mistral-large-latest', 'mistral-medium-latest', 'mistral-small-latest', 'codestral-latest' ],
'timeout' => 300,
'temperature' => 0.7,
'max_tokens' => 16384,
'max_tokens' => 20000,
'headers' => [],
'enabled' => true,
'is_system' => true,
Expand All @@ -106,7 +106,7 @@ class PressHub_AI_Provider_Defaults {
'available_models' => [ 'deepseek-chat', 'deepseek-reasoner' ],
'timeout' => 300,
'temperature' => 0.7,
'max_tokens' => 16384,
'max_tokens' => 20000,
'headers' => [],
'enabled' => true,
'is_system' => true,
Expand All @@ -119,7 +119,7 @@ class PressHub_AI_Provider_Defaults {
'available_models' => [ 'llama3:latest', 'mistral:latest', 'qwen2.5:latest', 'phi3:latest' ],
'timeout' => 300,
'temperature' => 0.7,
'max_tokens' => 16384,
'max_tokens' => 20000,
'headers' => [],
'enabled' => true,
'is_system' => true,
Expand All @@ -132,7 +132,7 @@ class PressHub_AI_Provider_Defaults {
'available_models' => [ 'default' ],
'timeout' => 300,
'temperature' => 0.7,
'max_tokens' => 16384,
'max_tokens' => 20000,
'headers' => [],
'enabled' => true,
'is_system' => false,
Expand Down
13 changes: 7 additions & 6 deletions presshub-ai-editor/includes/class-settings-render.php
Original file line number Diff line number Diff line change
Expand Up @@ -737,7 +737,7 @@ public function render_providers_grid(): void {
<?php endif; ?>
<div class="presshub-meta-row">
<span class="presshub-meta-label"><?php echo __( 'Tuning:', 'presshub-ai-editor' ); ?></span>
<span class="presshub-meta-val"><?php echo sprintf( 'Temp: %s | Max: %s | %ss', esc_html( (string) $temp ), esc_html( function_exists( 'number_format_i18n' ) ? number_format_i18n( $max_tokens ) : number_format( $max_tokens ) ), esc_html( (string) $timeout ) ); ?></span>
<span class="presshub-meta-val"><?php echo sprintf( 'Temp: %s | Max Output: %s | %ss', esc_html( (string) $temp ), esc_html( function_exists( 'number_format_i18n' ) ? number_format_i18n( $max_tokens ) : number_format( $max_tokens ) ), esc_html( (string) $timeout ) ); ?></span>
</div>
<div class="presshub-meta-row">
<span class="presshub-meta-label"><?php echo __( 'Credentials:', 'presshub-ai-editor' ); ?></span>
Expand Down Expand Up @@ -862,8 +862,9 @@ public function render_provider_modal(): void {
<input type="number" id="provider-form-temperature" name="temperature" class="widefat" step="0.05" min="0" max="2" value="0.7" style="margin-top: 4px;" />
</div>
<div class="presshub-form-group" style="flex: 1;">
<label for="provider-form-max-tokens"><strong><?php echo __( 'Max Tokens:', 'presshub-ai-editor' ); ?></strong></label>
<input type="number" id="provider-form-max-tokens" name="max_tokens" class="widefat" step="100" min="1" max="32768" value="10000" style="margin-top: 4px;" />
<label for="provider-form-max-tokens"><strong><?php echo __( 'Max Output Tokens:', 'presshub-ai-editor' ); ?></strong></label>
<input type="number" id="provider-form-max-tokens" name="max_tokens" class="widefat" step="100" min="1" max="65536" value="20000" style="margin-top: 4px;" />
<p class="description" style="margin-top: 4px; font-size: 11px;"><?php echo __( 'Maximum tokens generated in model responses (completion tokens). Does not limit input prompt tokens.', 'presshub-ai-editor' ); ?></p>
</div>
<div class="presshub-form-group" style="flex: 1;">
<label for="provider-form-timeout"><strong><?php echo __( 'Timeout (seconds):', 'presshub-ai-editor' ); ?></strong></label>
Expand Down Expand Up @@ -1349,8 +1350,8 @@ public function render_max_tokens_field( $args = [] ) {
$option = 'presshub_ai_max_tokens_' . $provider;
$value = (int) get_option( $option, PressHub_AI_Settings_Migration::default_max_tokens() );
?>
<input type="number" min="1" max="32768" step="1" name="<?php echo self::esc_attr_safe( $option ); ?>" id="<?php echo self::esc_attr_safe( $option ); ?>" value="<?php echo self::esc_attr_safe( $value ); ?>" class="small-text" />
<p class="description"><?php echo __( 'Maximum tokens per response (1-32768). Default 10000.', 'presshub-ai-editor' ); ?></p>
<input type="number" min="1" max="65536" step="1" name="<?php echo self::esc_attr_safe( $option ); ?>" id="<?php echo self::esc_attr_safe( $option ); ?>" value="<?php echo self::esc_attr_safe( $value ); ?>" class="small-text" />
<p class="description"><?php echo __( 'Maximum output tokens per response (1-65536). Default 20000.', 'presshub-ai-editor' ); ?></p>
<?php
}

Expand Down Expand Up @@ -2361,7 +2362,7 @@ public function render_briefing_text_prompt_field() {
<?php echo __( 'Load Default Template for Editing', 'presshub-ai-editor' ); ?>
</button>
</p>
<p class="description"><?php echo __( 'Custom system prompt for Greek text story curation. Leave empty to use standard prompt. Supports placeholders: {date}, {sources_list}, {articles_count}, {articles_context}.', 'presshub-ai-editor' ); ?></p>
<p class="description"><?php echo __( 'Custom system prompt for Greek text story curation. Leave empty to use standard prompt. Supports placeholders: {date}, {sources_list}, {articles_count}. (Optional: {articles_context} if you prefer articles placed inside the system prompt rather than the user prompt).', 'presshub-ai-editor' ); ?></p>
<?php
}

Expand Down
4 changes: 2 additions & 2 deletions presshub-ai-editor/presshub-ai-editor.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/**
* Plugin Name: PressHub AI Co-Pilot
* Description: AI Co-Authoring and Editorial Workflow for PressHub.
* Version: 2.3.3
* Version: 2.3.4
* Requires at least: 6.0
* Requires PHP: 7.4
* Tested up to: 6.7
Expand Down Expand Up @@ -42,7 +42,7 @@ function presshub_ai_migrate_max_tokens_defaults() {
}
add_action( 'admin_init', 'presshub_ai_migrate_max_tokens_defaults' );

define( 'PRESSHUB_AI_VERSION', '2.3.3' );
define( 'PRESSHUB_AI_VERSION', '2.3.4' );
define( 'PRESSHUB_AI_DIR', plugin_dir_path( __FILE__ ) );
define( 'PRESSHUB_AI_URL', plugin_dir_url( __FILE__ ) );

Expand Down
4 changes: 2 additions & 2 deletions presshub-ai-editor/tests/MaxTokensMigrationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ function mtm_check( $label, $condition ) {

// The cleared providers now resolve to the new default.
$api = new PressHub_AI_API_Client();
mtm_check( 'default after migration is 16384', 16384 === PressHub_AI_Provider_Defaults::default_max_tokens() );
mtm_check( 'meta reflects 16384 default', false !== strpos( PressHub_AI_API_Client::current_request_meta(), 'max_tokens=16384' ) );
mtm_check( 'default after migration is 20000', 20000 === PressHub_AI_Provider_Defaults::default_max_tokens() );
mtm_check( 'meta reflects 20000 default', false !== strpos( PressHub_AI_API_Client::current_request_meta(), 'max_tokens=20000' ) );

// --- Case 2: idempotent — second run changes nothing ------------------------
$before = $GLOBALS['OPTIONS_STORE'];
Expand Down
Loading
Loading