Plugin Directory

Changeset 3292957


Ignore:
Timestamp:
05/14/2025 05:48:09 AM (11 months ago)
Author:
jamesdlow
Message:

1.1.1

  • Add Google Gemini support
Location:
ai-translate-for-polylang
Files:
8 added
2 edited

Legend:

Unmodified
Added
Removed
  • ai-translate-for-polylang/trunk/ai-translate-polylang.php

    r3279533 r3292957  
    44Plugin URI: https://wordpress.org/plugins/ai-translate-polylang/
    55Description: Add auto AI translation caperbility to Polylang
    6 Version: 1.1.0
     6Version: 1.1.1
    77Author: James Low
    88Author URI: http://jameslow.com
     
    2323    public static $OPENAI_MODEL = 'gpt-4o';
    2424    public static $CLAUDE_MODEL = 'claude-3-5-sonnet-20240620';
     25    public static $GEMINI_MODEL = 'gemini-2.0-flash';
    2526
    2627    //Variables
     
    6364            array('id'=>'ai_translate_llm', 'type'=>'select', 'title'=>'LLM Service', 'default'=>'OpenAI', 'values'=>array(
    6465                'OpenAI',
    65                 'Claude'
     66                'Claude',
     67                'Gemini'
    6668            )),
    6769            array('id'=>'ai_translate_openai', 'type'=>'title', 'title'=>'OpenAI', 'description'=>''),
     
    8385                'claude-3-haiku-20240307'
    8486            )),
     87            array('id'=>'ai_translate_gemini', 'type'=>'title', 'title'=>'Gemini', 'description'=>''),
     88            array('id'=>'ai_translate_gemini_key', 'type'=>'string', 'title'=>'Gemini API Key', 'description'=>''),
     89            array('id'=>'ai_translate_gemini_model', 'type'=>'select', 'title'=>'Gemini Model', 'default'=>self::$GEMINI_MODEL, 'values'=>array(
     90                'gemini-2.0-flash',
     91                'gemini-1.5-flash',
     92                'gemini-1.5-pro'
     93            )),
    8594            array('id'=>'ai_translate_meta', 'type'=>'title', 'title'=>'Meta', 'description'=>''),
    8695            array('id'=>'ai_translate_meta_clear', 'type'=>'text', 'title'=>'Meta keys to clear', 'description'=>'', 'default'=>''),
     
    156165        if ($text && trim($text) != '') {
    157166            $prompt = self::prompt($to, $from);
    158             if (get_option('ai_translate_llm', 'OpenAI') == 'Claude') {
    159                 $result = self::claude_message($text, $prompt);
     167            $service = get_option('ai_translate_llm', 'OpenAI');
     168            if ($service == 'Claude') {
     169                $result = self::claude_api($text, $prompt);
    160170                $body = json_decode($result['body'], true);
    161171                if ($result['response']['code'] == 200) {
    162172                    return $body['content'][0]['text'];
     173                } else {
     174                    return 'ERROR: '.$body['error']['message'];
     175                }
     176            } elseif ($service == 'Gemini') {
     177                $result = self::gemini_api($text, $prompt);
     178                $body = json_decode($result['body'], true);
     179                if ($result['response']['code'] == 200) {
     180                    return $body['candidates'][0]['content']['parts'][0]['text'];
    163181                } else {
    164182                    return 'ERROR: '.$body['error']['message'];
     
    263281
    264282    /* APIs */
    265     public static function claude_message($content, $role = 'You are a helpful assistant.', $tokens = 1000, $temp = 0) {
     283    public static function claude_api($content, $role = 'You are a helpful assistant.', $tokens = 5000, $temp = 0) {
    266284        $request = new \WP_Http();
    267285        $headers = array(
     
    272290        $message = array(
    273291            'model' => get_option('ai_translate_claude_model', self::$CLAUDE_MODEL),
    274             'max_tokens' => 1000,
     292            'max_tokens' => $tokens,
    275293            'temperature' => $temp,
    276294            'system' => $role,
     
    298316        return $openai;
    299317    }
    300     public static function openai_api($content, $role = 'You are a helpful assistant.', $tokens = 1000) {
     318    public static function openai_api($content, $role = 'You are a helpful assistant.', $tokens = 5000) {
    301319        //https://packagist.org/packages/orhanerday/open-ai
    302320        return json_decode(self::openai()->chat([
     
    318336         ]), true);
    319337    }
     338    public static function gemini_api($content, $role = 'You are a helpful assistant.') {
     339        //https://ai.google.dev/gemini-api/docs/text-generation#rest_2
     340        $request = new \WP_Http();
     341        $headers = array(
     342            'Content-Type' => 'application/json',
     343        );
     344        $message = array(
     345            'system_instruction' => array(
     346                'parts' => array(
     347                    array('text' => $role)
     348                )
     349            ),
     350            'contents' => array(
     351                'parts' => array(
     352                    array('text' => $content)
     353                )
     354            )
     355        );
     356        $args = array(
     357            'method'    => 'POST',
     358            'headers'   => $headers,
     359            'body'      => json_encode($message),
     360            'timeout'   => 60,
     361        );
     362        return $request->request('https://generativelanguage.googleapis.com/v1beta/models/'.get_option('ai_translate_gemini_model', self::$GEMINI_MODEL).':generateContent?key='.get_option('ai_translate_gemini_key', self::$GEMINI_MODEL), $args);
     363    }
    320364}
    321365
  • ai-translate-for-polylang/trunk/readme.txt

    r3279533 r3292957  
    55Requires at least: 3.0
    66Tested up to: 6.6.1
    7 Stable tag: 1.1.0
     7Stable tag: 1.1.1
    88License: MIT
    99License URI: https://opensource.org/licenses/MIT
     
    3434== Changelog ==
    3535
     36= 1.1.1 =
     37* Add Google Gemini support
     38
    3639= 1.1.0 =
    37 * Set post language on new post before trying to tranlsate
     40* Set post language on new post before trying to translate
    3841
    3942= 1.0.9 =
Note: See TracChangeset for help on using the changeset viewer.