Files
Guido.Tech/ai_intelligence_layer/services/__pycache__/gemini_client.cpython-313.pyc

52 lines
6.5 KiB
Plaintext
Raw Normal View History

2025-10-18 22:36:20 -05:00
<EFBFBD>
<00>e<EFBFBD>h<EFBFBD><00><00><><00>SrSSKJr SSKrSSKrSSKrSSKJrJ r J
2025-10-18 22:36:20 -05:00
r
SSK J r \R"\5r"SS5rg)z@
Gemini API client wrapper with retry logic and error handling.
<EFBFBD>N)<03>Dict<63>Any<6E>Optional)<01> get_settingsc <00><><00>\rSrSrSrSrSS\S\S\S\ \\
44Sjjr S \S\ \\
44S
jr S\S\4S jr S\S\S\4S jrS rg)<10> GeminiClient<6E>z@Wrapper for Google Gemini API with retry logic and JSON parsing.c<00>4<00>[5n[R"URS9 [R"UR
5UlURUlURUl 0Ul
[RSUR
35 g)z4Initialize Gemini client with API key from settings.)<01>api_keyz&Gemini client initialized with model: N) r<00>genai<61> configure<72>gemini_api_key<65>GenerativeModel<65> gemini_model<65>model<65>gemini_max_retries<65> max_retries<65> demo_mode<64> _demo_cache<68>logger<65>info)<02>self<6C>settingss <20>Q/Users/adipu/Documents/HPCSimSite/ai_intelligence_layer/services/gemini_client.py<70>__init__<5F>GeminiClient.__init__ss<00><00><1F>><3E><08> <0A><0F><0F><08> 7<> 7<>8<><1A>*<2A>*<2A>8<EFBFBD>+@<40>+@<40>A<><04>
2025-10-18 22:36:20 -05:00
<EFBFBD>#<23>6<>6<><04><18>!<21>+<2B>+<2B><04><0E>,.<2E><04><18><0E> <0B> <0B><<3C>X<EFBFBD>=R<>=R<><S<>T<>U<><00>prompt<70> temperature<72>timeout<75>returnc<00><00><># <00>UR(aDURX5nX@R;a$[R S5 URU$Sn[ SUR S-5H<>n[R SUSUR 35 [R"USS9n[US5nURRUUS U0S
9n U Rn
[RS [U
5S 35 URU
5n UR(aURX5nX<>RU'[R S 5 U s $ SUR SU3n[R3U5 [/U5e![ R"arn S[%U 53n[R'SUSU35 X`R :a.UR)U5n[*R,"S5 Sn A GM<>Sn A GM<>Sn A f[.a<>n S[%U 53n[R'SUSU35 X`R :amS [%U 5R15;dS[%U 5;aSU-n [R SU S35 OSU-n [*R,"U 5 Sn A GMVSn A GM]Sn A ff=f7f)a+
Generate JSON response from Gemini with retry logic.
Args:
prompt: The prompt to send to Gemini
temperature: Sampling temperature (0.0-1.0)
timeout: Request timeout in seconds
Returns:
Parsed JSON response
Raises:
Exception: If all retries fail or JSON parsing fails
z%Returning cached response (demo mode)N<>zGemini API call attempt <20>/zapplication/json)r<00>response_mime_type<70><r )<02>generation_config<69>request_optionszRaw response length: z charsz/Successfully generated and parsed JSON responsezJSON parsing error: zAttempt z failed: z API error: <20>504<30>zTimeout detected, waiting zs before retry<72>z Failed after z attempts. Last error: )r<00>_get_cache_keyrrr<00>rangerr <00>GenerationConfig<69>maxr<00>generate_content<6E>text<78>debug<75>len<65> _parse_json<6F>json<6F>JSONDecodeError<6F>str<74>warning<6E>_add_json_emphasis<69>time<6D>sleep<65> Exception<6F>lower<65>error)rrrr <00> cache_key<65>
last_error<EFBFBD>attemptr'<00>actual_timeout<75>response<73> response_text<78>result<6C>e<> wait_time<6D> error_msgs r<00> generate_json<6F>GeminiClient.generate_jsons<><00><00><00>* <10>><3E>><3E><1C>+<2B>+<2B>F<EFBFBD>@<40>I<EFBFBD><18>,<2C>,<2C>,<2C><16> <0B> <0B>C<>D<><1B>'<27>'<27> <09>2<>2<><19>
<EFBFBD><1C>Q<EFBFBD><04> 0<> 0<>1<EFBFBD> 4<>5<>G<EFBFBD>5 *<2A><16> <0B> <0B>6<>w<EFBFBD>i<EFBFBD>q<EFBFBD><14>AQ<41>AQ<41>@R<>S<>T<>%*<2A>$:<3A>$:<3A> +<2B>'9<>%<12>!<21>"%<25>W<EFBFBD>b<EFBFBD>!1<><0E><1F>:<3A>:<3A>6<>6<><1A>&7<>%.<2E><0E>$?<3F>7<><12><08>!)<29> <0A> <0A> <0A><16> <0C> <0C>4<>S<EFBFBD><1D>5G<35>4H<34><06>O<>P<><1E>)<29>)<29>-<2D>8<><06><18>><3E>><3E> $<24> 3<> 3<>F<EFBFBD> H<>I<EFBFBD>28<32>$<24>$<24>Y<EFBFBD>/<2F><16> <0B> <0B>M<>N<><1D> <0A>A6<>r$<24>D<EFBFBD>$4<>$4<>#5<>5L<35>Z<EFBFBD>L<EFBFBD>Y<> <09><0E> <0C> <0C>Y<EFBFBD><1F><17> <09>"<22>"<22><>3<18>'<27>'<27> "<22>3<>C<EFBFBD><01>F<EFBFBD>8<EFBFBD><<3C>
<EFBFBD><16><0E><0E><18>'<27><19>)<29>J<EFBFBD><<3C>H<>I<><1A>-<2D>-<2D>-<2D>!<21>4<>4<>V<EFBFBD><<3C>F<EFBFBD><18>J<EFBFBD>J<EFBFBD>q<EFBFBD>M<EFBFBD>M<EFBFBD>.<2E><>
<1D> *<2A>*<2A>3<EFBFBD>q<EFBFBD>6<EFBFBD>(<28>3<>
<EFBFBD><16><0E><0E><18>'<27><19>)<29>J<EFBFBD><<3C>H<>I<><1A>-<2D>-<2D>-<2D> <20>C<EFBFBD><01>F<EFBFBD>L<EFBFBD>L<EFBFBD>N<EFBFBD>2<>e<EFBFBD>s<EFBFBD>1<EFBFBD>v<EFBFBD>o<EFBFBD>$%<25><07>K<EFBFBD> <09><1E> <0B> <0B>&@<40><19> <0B>><3E>$Z<>[<5B>$%<25><07>K<EFBFBD> <09><18>J<EFBFBD>J<EFBFBD>y<EFBFBD>)<29>)<29>.<2E><> *<2A>sE<00>A4K<01>7C(F<02>7K<01>K<05>*AH<05> K<01> K<05>$BK<05>K<01>K<05>Kr1c<00><00>UR5nURS5(aUSSnURS5(aUSSnURS5(aUSSnUR5n[R"U5$)z<>
Parse JSON from response text, handling common issues.
Args:
text: Raw response text
Returns:
Parsed JSON object
Raises:
json.JSONDecodeError: If parsing fails
z```json<6F>Nz```<60><00><><EFBFBD><EFBFBD><EFBFBD>)<05>strip<69>
startswith<EFBFBD>endswithr5<00>loads)rr1s rr4<00>GeminiClient._parse_jsonxsy<00><00><14>z<EFBFBD>z<EFBFBD>|<7C><04> <0F>?<3F>?<3F>9<EFBFBD> %<25> %<25><17><01><02>8<EFBFBD>D<EFBFBD> <0F>?<3F>?<3F>5<EFBFBD> !<21> !<21><17><01><02>8<EFBFBD>D<EFBFBD> <0F>=<3D>=<3D><15> <1F> <1F><17><03><12>9<EFBFBD>D<EFBFBD><13>z<EFBFBD>z<EFBFBD>|<7C><04><14>z<EFBFBD>z<EFBFBD>$<24><1F>rc<00><00>SnX!;aX-$U$)z4Add stronger JSON formatting requirements to prompt.zu
IMPORTANT: You MUST return ONLY valid JSON. No markdown, no code blocks, no explanations. Just the raw JSON object.<2E>)rr<00>emphasiss rr9<00>GeminiClient._add_json_emphasis<69>s<00><00>M<02><08> <13> !<21><19>$<24> $<24><15> rc<00><00>USSSU3$)z!Generate cache key for demo mode.N<>d<00>_rU)rrrs rr,<00>GeminiClient._get_cache_key<65>s<00><00><19><14>#<23>,<2C><1E>q<EFBFBD><1B> <0A>.<2E>.r)rrrrN)gffffff<66>?<3F>)<10>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__firstlineno__<5F>__doc__rr7<00>float<61>intrrrIr4r9r,<00>__static_attributes__rUrrrrs<><00><00>J<> V<01> !<21><19> X#<23><13>X#<23><1B>X#<23><15> X#<23>
<0E>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> X#<23>t <20><03> <20><04>S<EFBFBD>#<23>X<EFBFBD><0E> <20>6<16><13><16><13><16>/<2F>S<EFBFBD>/<2F>u<EFBFBD>/<2F><13>/rr)ra<00>google.generativeai<61> generativeair r5<00>loggingr:<00>typingrrr<00>configr<00> getLoggerr]rrrUrr<00><module>rks=<00><01><04>$<24> <0B><0E> <0B>&<26>&<26><1F> <10> <1A> <1A>8<EFBFBD> $<24><06>O/<2F>O/r