from pathlib import Path
import re

src = Path("/mnt/data/Pasted text(20260812-071551).txt")
text = src.read_text(encoding="utf-8")

new_func = r'''	public function get_embedding( $text ) {
		$api_key = ! empty( $this->opts['gemini_key'] ) ? $this->opts['gemini_key'] : '';

		if ( empty( $api_key ) ) {
			throw new RuntimeException(
				esc_html__( 'Gemini API key is not configured.', 'easyit-ai-chat' )
			);
		}

		$model   = 'gemini-embedding-2';
		$timeout = ! empty( $this->opts['gemini_timeout'] ) ? (int) $this->opts['gemini_timeout'] : 30;

		$url = 'https://generativelanguage.googleapis.com/v1beta/models/' .
			rawurlencode( $model ) .
			':embedContent';

		$response = wp_remote_post(
			$url,
			array(
				'headers' => array(
					'Content-Type'   => 'application/json',
					'x-goog-api-key' => $api_key,
				),
				'body'    => wp_json_encode(
					array(
						'content' => array(
							'parts' => array(
								array(
									'text' => (string) $text,
								),
							),
						),
						'embedContentConfig' => array(
							'outputDimensionality' => 768,
						),
					)
				),
				'timeout' => $timeout,
			)
		);

		if ( is_wp_error( $response ) ) {
			throw new RuntimeException(
				sprintf(
					/* translators: %s: error message */
					esc_html__( 'Gemini embedding request failed: %s', 'easyit-ai-chat' ),
					esc_html( $response->get_error_message() )
				)
			);
		}

		$status = wp_remote_retrieve_response_code( $response );
		$body   = wp_remote_retrieve_body( $response );
		$data   = json_decode( $body, true );

		if ( $status < 200 || $status >= 300 ) {
			$message = ! empty( $data['error']['message'] )
				? $data['error']['message']
				: 'HTTP ' . $status;

			throw new RuntimeException(
				esc_html( 'Gemini embedding request failed: ' . $message )
			);
		}

		if (
			! empty( $data['embedding']['values'] ) &&
			is_array( $data['embedding']['values'] )
		) {
			return array_map( 'floatval', $data['embedding']['values'] );
		}

		throw new RuntimeException(
			esc_html__( 'No embedding vector returned from Gemini.', 'easyit-ai-chat' )
		);
	}'''

pattern = re.compile(
    r'\tpublic function get_embedding\( \$text \) \{.*?\n\t\}\n\n\t// -----------------------------------------------------------------------\n\t// Text extraction',
    re.S
)
m = pattern.search(text)
if not m:
    raise RuntimeError("Could not locate get_embedding() block")

replacement = new_func + "\n\n\t// -----------------------------------------------------------------------\n\t// Text extraction"
modified = pattern.sub(replacement, text, count=1)

# Also update nearby comments so the file accurately describes the implementation.
modified = modified.replace(
    "Handles document text extraction, chunking, embedding via Ollama,\n * vector similarity search, and context injection into the system prompt.",
    "Handles document text extraction, chunking, embedding via the Gemini API,\n * vector similarity search, and context injection into the system prompt."
)
modified = modified.replace(
    "Falls back to keyword search when Ollama embedding is unavailable.",
    "Falls back to keyword search when Gemini embedding is unavailable."
)
modified = modified.replace(
    "// Try semantic search via Ollama embedding.",
    "// Try semantic search via Gemini embedding."
)
modified = modified.replace(
    "// Allow long-running processing (many Ollama embed calls).",
    "// Allow long-running processing (many Gemini embed calls)."
)
modified = modified.replace(
    " * Generate a text embedding vector via the Ollama embed API.\n *\n * Supports both the legacy /api/embeddings and current /api/embed endpoints.",
    " * Generate a text embedding vector via the Gemini embedContent API."
)

out = Path("/mnt/data/class-eaic-rag-gemini.php")
out.write_text(modified, encoding="utf-8")

print(f"Created: {out}")
print("Original lines:", len(text.splitlines()))
print("Modified lines:", len(modified.splitlines()))
print("Uses option key:", "'gemini_key'")
print("Embedding model:", "gemini-embedding-2")
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="//www.glavopoulos.com/wp-content/plugins/wordpress-seo/css/main-sitemap.xsl"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
	<sitemap>
		<loc>https://www.glavopoulos.com/post-sitemap.xml</loc>
		<lastmod>2026-08-11T17:05:17+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://www.glavopoulos.com/page-sitemap.xml</loc>
		<lastmod>2026-08-12T06:07:27+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://www.glavopoulos.com/service-sitemap.xml</loc>
		<lastmod>2026-08-10T17:00:46+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://www.glavopoulos.com/category-sitemap.xml</loc>
		<lastmod>2026-08-11T17:05:17+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://www.glavopoulos.com/post_tag-sitemap.xml</loc>
		<lastmod>2026-08-11T17:05:17+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://www.glavopoulos.com/service-type-sitemap.xml</loc>
		<lastmod>2026-08-10T14:09:59+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://www.glavopoulos.com/product-category-sitemap.xml</loc>
		<lastmod>2022-11-22T11:46:51+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://www.glavopoulos.com/product-type-sitemap.xml</loc>
		<lastmod>2022-11-22T11:46:51+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://www.glavopoulos.com/media-type-sitemap.xml</loc>
		<lastmod>2026-02-27T13:03:36+00:00</lastmod>
	</sitemap>
</sitemapindex>
<!-- XML Sitemap generated by Yoast SEO -->