Files
llm-in-text/backend/__pycache__/llm.cpython-313.pyc

54 lines
5.6 KiB
Plaintext
Raw Normal View History

<EFBFBD>
<00>?<3F>iz<00> <00>N<00>SSKrSSKrSSKrSSKrSSKJr \"5 \R "SS5r\R "SS5r\R "SS5r \R"\S 9r \R"S
5r S rS \\\44S jrSSS.S\S\S\S \4SjjrSS\S\S \4Sjjrg)<19>N)<01> load_dotenv<6E> OLLAMA_MODELz gpt-oss:20b<30> OLLAMA_HOSTzhttp://192.168.0.120:11434<33> VLM_MODELz qwen3-vl:30b)<01>host<73>llmaYou are an OCR and visual-context extractor for markdown writing assistance.
Your output will be embedded inside an HTML comment as hidden context for a text-completion model.
Requirements:
- Keep output compact: maximum 120 words.
- Use plain text only (no markdown code fences).
- Never output <!-- or -->.
- Do not invent unreadable text; mark uncertain characters with ?.
- Preserve original script for recognized text (do not forcibly translate).
Return exactly this format:
TEXT:
<exact transcription of visible text; use " | " for line breaks; write "(none)" if no readable text>
KEY_DETAILS:
- <3-5 short factual bullets about relevant objects/layout>
LANGUAGE:
<dominant language(s) in visible text, e.g. English / Chinese / Mixed>
SUMMARY:
<one short sentence, <= 20 words><3E>returnc<00><><00>SnSn[US5(aSUR(aBURR=(d Sn[URSS5=(d SnX4$[ U[
5(aHUR S05nUR SS5=(d SnUR SS5=(d SnX4$)N<><00>message<67>thinking<6E>content)<07>hasattrr r<00>getattr<74>
isinstance<EFBFBD>dict<63>get)<04>responserr <00>msgs <20>+/Users/allenyuan/llm-in-text/backend/llm.py<70>_extract_messager)s<><00><00><10>G<EFBFBD><11>H<EFBFBD><0E>x<EFBFBD><19>#<23>#<23><08>(8<>(8<><1A>"<22>"<22>*<2A>*<2A>0<>b<EFBFBD><07><1A>8<EFBFBD>+<2B>+<2B>Z<EFBFBD><12><<3C>B<><02><08> <13> <1C><1C>
<14>H<EFBFBD>d<EFBFBD> #<23> #<23><16>l<EFBFBD>l<EFBFBD>9<EFBFBD>b<EFBFBD>)<29><03><15>'<27>'<27>)<29>R<EFBFBD>(<28>.<2E>B<EFBFBD><07><16>7<EFBFBD>7<EFBFBD>:<3A>r<EFBFBD>*<2A>0<>b<EFBFBD><08> <12> <1C><1C><00>defaultgffffff<66>?)<02>tag<61> temperature<72>promptrrc
<00><00><># <00>[R"5n[RSU[[
[ U5U5 [R[SUS./SUSS.S9IShv<01>N n[U5upg[R"5U-
S -n[RS UU[U5R[ U5[ U55 UR5(d[RS U5 XgS .$N<>![a3 [R"5U-
S -n[RS
X5 ef=f7f)u5
调用 Ollama API 并返回 content 和 thinking。
z<[LLM][%s] request model=%s host=%s prompt_chars=%d temp=%.2f<EFBFBD>user)<02>rolerFg<46><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?)r<00>repeat_penalty<74><04>model<65>messages<65>stream<61>optionsN<73><4E>z%[LLM][%s] request failed after %.1fmszP[LLM][%s] response in %.1fms response_type=%s content_chars=%d thinking_chars=%dz)[LLM][%s] empty content returned by model)rr )<10>time<6D> perf_counter<65>logger<65>inforr<00>len<65>client<6E>chat<61> Exception<6F> exceptionr<00>type<70>__name__<5F>strip<69>warning)rrr<00>startr<00>
elapsed_msrr s r<00> call_ollamar68s-<00><00><00> <11> <1D> <1D> <1F>E<EFBFBD>
<EFBFBD>K<EFBFBD>K<EFBFBD>F<> <0B><14><13> <0B>F<EFBFBD> <0B><13> <06> <0E><1F><1B><1B><1E>%<25>&<26>9<>:<3A><18>*<2A>"%<25><0E> %<25>
<EFBFBD>
<EFBFBD><08>)<29><18>2<><15>G<EFBFBD><16>#<23>#<23>%<25><05>-<2D><14>5<>J<EFBFBD>
<EFBFBD>K<EFBFBD>K<EFBFBD>Z<> <0B><12> <0C>X<EFBFBD><0E><1F><1F> <0B>G<EFBFBD> <0C> <0B>H<EFBFBD> <0A> <06> <13>=<3D>=<3D>?<3F>?<3F><0E><0E><0E>B<>C<EFBFBD>H<><1E> 5<>5<>9
<EFBFBD><EFBFBD> <15><0E><1A>'<27>'<27>)<29>E<EFBFBD>1<>T<EFBFBD>9<>
<EFBFBD><0E><18><18>@<40>#<23>R<> <0A><0E>s1<00>AE<01>$D<00>(D<04>)D<00>-BE<01>D<00>=E<03>E<01> image_bytes<65>languagec <00><00><># <00>[R"5n[RS[[
[ U5U5 [R[S[U/S./SSS0S9IShv<01>N n[U5upV[R"5U-
S-n[RS
U[U5R[ U5[ U55 UR5(d[R!S 5 U$N<>![a3 [R"5U-
S-n[RS U5 ef=f7f) Nz>[VLM][ocr] request model=%s host=%s image_bytes=%d language=%sr)rr<00>imagesFrg333333<33>?r!r&z&[VLM][ocr] request failed after %.1fmszQ[VLM][ocr] response in %.1fms response_type=%s content_chars=%d thinking_chars=%dz*[VLM][ocr] empty content returned by model)r'r(r)r*rrr+r,r-<00>VLM_OCR_CONTEXT_PROMPTr.r/rr0r1r2r3)r7r8r4rr5rr s r<00> call_vlm_ocrr<es)<00><00><00> <10> <1D> <1D> <1F>E<EFBFBD>
<EFBFBD>K<EFBFBD>K<EFBFBD>H<><11><13> <0B>K<EFBFBD><18><10> <06><0E><1F><1B><1B><1B><1E>1<>&<26>-<2D><0E><0F>
<19>"<22>C<EFBFBD>(<28>%<25> 
<EFBFBD> 
<EFBFBD><08>)<29><18>2<><15>G<EFBFBD><16>#<23>#<23>%<25><05>-<2D><14>5<>J<EFBFBD>
<EFBFBD>K<EFBFBD>K<EFBFBD>[<5B><12> <0C>X<EFBFBD><0E><1F><1F> <0B>G<EFBFBD> <0C> <0B>H<EFBFBD> <0A> <06> <13>=<3D>=<3D>?<3F>?<3F><0E><0E><0E>C<>D<> <12>N<EFBFBD>9 
<EFBFBD><EFBFBD> <15><0E><1A>'<27>'<27>)<29>E<EFBFBD>1<>T<EFBFBD>9<>
<EFBFBD><0E><18><18>A<>:<3A>N<> <0A><0E>s1<00>AE<01>)D<00>,D<04>-D<00>1BE<01>D<00>=E<03>E)<01>auto)<17>osr'<00>logging<6E>ollama<6D>dotenvr<00>getenvrrr<00> AsyncClientr,<00> getLoggerr)r;<00>tuple<6C>strr<00>floatrr6<00>bytesr<<00>rr<00><module>rJs<><00><01> <09> <0B><0E> <0A><1E> <0B> <0A><11>y<EFBFBD>y<EFBFBD><1E><1D>7<> <0C><10>i<EFBFBD>i<EFBFBD> <0A>'C<>D<> <0B> <0E>I<EFBFBD>I<EFBFBD>k<EFBFBD>><3E> 2<> <09> <0F> <1B> <1B><1B> -<2D><06> <10> <1A> <1A>5<EFBFBD> !<21><06>%<25><16>2 <1D>%<25><03>S<EFBFBD><08>/<2F> <1D>2;<3B>QT<51>+6<>c<EFBFBD>+6<>3<EFBFBD>+6<><15>+6<>Y]<5D>+6<>Z'<13>E<EFBFBD>'<13>S<EFBFBD>'<13>c<EFBFBD>'r