Files
param-hub-python/__pycache__/llm.cpython-312.pyc

73 lines
9.6 KiB
Plaintext
Raw Normal View History

<EFBFBD>
<00>Yj<><00><00>v<00>dZddlZddlZddlZddlmZmZddlmZm Z d d<05>Z
dd<06>Z d<07>Z de fd <09>Zd
ed efd <0C>Zy)u!
ParamHub LLM 智能解析模块
<EFBFBD>N)<02>CATEGORIES_FILE<4C>
IMAGES_DIR)<02> load_data<74>get_llm_configc<00><<00><01> <09>tt<00>}<03>rt<00>fd<01>|D<00>d<02>}n-ddddd<06>}|j|<00><00> t<00> fd<07>|D<00>d<02>}t ||<02>}t j |dd <09>
<EFBFBD>}d |<07>d <0C>}||||r|jd d<0E>d<0F>Sdd<0F>S)u8获取解析 prompt 模板供前端显示和编辑c3<00>4<00>K<00>|]}|d<00>k(s<01> |<01><01><00>y<01>w<01><02>idN<64><00><03>.0<EFBFBD>c<> category_ids <20><>2/home/hermes/.hermes/works/param-hub-python/llm.py<70> <genexpr>z,get_parse_prompt_template.<locals>.<genexpr><00><00><><00><><00>D<>z<EFBFBD>!<21>Q<EFBFBD>t<EFBFBD>W<EFBFBD> <0B>-C<>A<EFBFBD>z<EFBFBD><7A><00> <01>N<> ai-models<6C>gpus<75>cpus)<04>model<65>gpu<70>cpu<70>dynamicc3<00>4<00>K<00>|]}|d<00>k(s<01> |<01><01><00>y<01>wr r <00>r r<00>cat_ids <20>rrz,get_parse_prompt_template.<locals>.<genexpr><00><00><><00><><00>?<3F>z<EFBFBD>!<21>Q<EFBFBD>t<EFBFBD>W<EFBFBD><06>-><3E>A<EFBFBD>z<EFBFBD>rF<><00><02> ensure_ascii<69>indent<6E>]请分析图片中的产品参数信息,提取结构化数据。
需要提取的字段:
u 
重要要求:
1. 图片中可能包含1个或多个产品请识别所有产品
2. 如果是多张图片,请综合分析所有图片内容
3. **提取数据时保留原始单位**:字段标签中如有单位标注(如($)、(GB)、(MHz)等),提取时请带上对应单位,保持数据完整性
4. 如果某字段没有提及返回null
5. 返回格式:如果识别到多个产品,返回数组 [对象列表]; 如果只有一个产品,返回单个对象
6. 只返回JSON数据不要其他内容<E58685>name<6D>)<04>fields<64> fields_json<6F> image_prompt<70> category_name)rr<00>next<78>get<65> _build_fields<64>json<6F>dumps)
<EFBFBD> category_typer<00>subcategory_id<69>
categories<EFBFBD>cat<61>type_to_cat_idr&r'r(rs
` @r<00>get_parse_prompt_templater4 s<><00><><00><1A>?<3F>+<2B>J<EFBFBD><12><12>D<>z<EFBFBD>D<>d<EFBFBD>K<><03>#.<2E>v<EFBFBD>f<EFBFBD>Y]<5D>^<5E><0E><1F>#<23>#<23>M<EFBFBD>2<><06><12>?<3F>z<EFBFBD>?<3F><14>F<><03> <1A>3<EFBFBD><0E> /<2F>F<EFBFBD><16>*<2A>*<2A>V<EFBFBD>%<25><01>B<>K<EFBFBD><01> <0A> <0A>,<2C> /<2F>L<EFBFBD><19>"<22>$<24>03<30><13><17><17><16><12>,<2C>  <06><06>:<<3C>  <06><06>c <00>z<00><03><18>tt<00>}<06>rt<00>fd<01>|D<00>d<02>}n,dddd<06>}|j|<01><00>t<00>fd<07>|D<00>d<02>}t ||<04>} t j | dd <09>
<EFBFBD>}
g} |r<>t|<02>d kDr<>|r|j<00>r|} nd |
<EFBFBD>d <0A>} | jd| d<0F><02>|D]<5D>} t| t<00>s<01>| jd<10>r| jdd| id<13><02><00><| jd<14>r| jdd| id<13><02><00>dt| <0A>}|s<01>r| jdd|id<13><02><00><>nd|<00>d|
<EFBFBD>d<17>} | jd| d<0F><02> t<00>}|r|jdd<19>n|d}tj |d<00>d<1C>dd|d<00><00>d <20>|d!d"d#<23>d$| d#<23>gd%d&d'<27>d(<28>)<29>}|j"d*k(r<>|j <00>}|d+d d,d-j<00>}|jd.<2E>r9d/|vr|j%d/d0<64>d0n|d1d}d.|vr|j'd.d0<64>d n|}t j(|<13>}t|t*<00>r|n|g}|D<00>cgc] }t-|<16><00><02>c}S |xsd3dd4|d5<64>gScc}w#t.$r}t1d2|<17><00><02>Yd}~<17>.d}~wwxYw)6u:使用大模型解析文本/图片提取结构化数据c3<00>4<00>K<00>|]}|d<00>k(s<01> |<01><01><00>y<01>wr r r s <20>rrz!parse_with_llm.<locals>.<genexpr>5rrNrrr)rrrc3<00>4<00>K<00>|]}|d<00>k(s<01> |<01><01><00>y<01>wr r rs <20>rrz!parse_with_llm.<locals>.<genexpr>9rrFrr rr#u<>
重要要求:
1. 图片中可能包含1个或多个产品请识别所有产品
2. 如果是多张图片,请综合分析所有图片内容
3. **提取数据时保留原始单位**:字段标签中如有单位标注,提取时请带上对应单位
4. 如果某字段没有提及返回null
5. 返回格式:如果识别到多个产品,返回数组; 如果只有一个产品,返回单个对象
6. 只返回JSON数据不要其他内容<E58685>text)<02>typer9<00>http<74> image_url<72>url)r:r<<00>data:uB请解析以下文本,提取结构化数据。
文本内容:
u
需要提取的字段:
u<EFBFBD>
要求:
1. 根据文本内容智能提取各个字段的值
2. **提取数据时保留原始单位**
3. 如果某字段在文本中没有提及返回null
4. 返回JSON格式不要包含任何其他内容
请直接返回JSON数据<EFBFBD> vision_modelzgpt-4-vision-previewr<00>base_urlz/chat/completionszapplication/jsonzBearer <20>api_key)z Content-Type<70> Authorization<6F>systemuL你是一个产品参数提取助手。只返回JSON不要其他内容。)<02>role<6C>content<6E>useri<72>g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?)r<00>messages<65>
max_tokens<EFBFBD> temperature<72><)<03>headersr-<00>timeout<75><74><00>choices<65>messagerEz```<60>
<EFBFBD><00>uLLM解析失败: u未命名产品<E4BAA7>2)r$<00> description)rrr*r+r,r-r.<00>len<65>strip<69>append<6E>
isinstance<EFBFBD>str<74>
startswith<EFBFBD>_load_local_imager<00>requests<74>post<73> status_code<64>split<69>rsplit<69>loads<64>list<73> _clean_result<6C> Exception<6F>print)r9r/<00>imagesrr0<00> custom_promptr1r2r3r&r'<00> content_parts<74> prompt_text<78>img<6D>b64<36>
llm_configr<00>response<73>datarE<00>parsed<65>results<74>item<65>ers ` @r<00>parse_with_llmrs/s<00><><00><1B>?<3F>+<2B>J<EFBFBD><12><12>D<>z<EFBFBD>D<>d<EFBFBD>K<><03>#.<2E>v<EFBFBD>f<EFBFBD>M<><0E><1F>#<23>#<23>M<EFBFBD>2<><06><12>?<3F>z<EFBFBD>?<3F><14>F<><03> <1A>3<EFBFBD><0E> /<2F>F<EFBFBD><16>*<2A>*<2A>V<EFBFBD>%<25><01>B<>K<EFBFBD><16>M<EFBFBD> <0A>#<23>f<EFBFBD>+<2B><01>/<2F> <18>]<5D>0<>0<>2<>'<27>K<EFBFBD><01> <0A> <0A>,<2C> /<2F>K<EFBFBD> <16><1C><1C>f<EFBFBD>k<EFBFBD>B<>C<><19>C<EFBFBD><19>#<23>s<EFBFBD>#<23><16>><3E>><3E>&<26>)<29>!<21>(<28>(<28>+<2B>U<EFBFBD>TW<54>L<EFBFBD>)Y<>Z<><18>^<5E>^<5E>G<EFBFBD>,<2C>!<21>(<28>(<28>+<2B>U<EFBFBD>TW<54>L<EFBFBD>)Y<>Z<>+<2B>C<EFBFBD>0<>C<EFBFBD><1A>%<25>,<2C>,<2C>k<EFBFBD>QV<51>X[<5B>P\<5C>-]<5D>^<5E><1A><01><06><06><01> <0A> <0A><1D>  <20> <0B> <16><1C><1C>f<EFBFBD>k<EFBFBD>B<>C<>$'<27>#<23>%<25>
<EFBFBD>JP<EFBFBD>
<EFBFBD><0E><0E>~<7E>/E<>F<>V`<60>ah<61>Vi<56><05><1B>=<3D>=<3D><19>*<2A>%<25>&<26>&7<> 8<> 2<>#*<2A>:<3A>i<EFBFBD>+@<40>*A<>!B<><0E>
<1F>%<25> n<>p<01>#<23> <0A>><3E><12>
#<23>"<22> <0E><17>!
<EFBFBD><08>& <14> <1F> <1F>3<EFBFBD> &<26><1B>=<3D>=<3D>?<3F>D<EFBFBD><1A>9<EFBFBD>o<EFBFBD>a<EFBFBD>(<28><19>3<>I<EFBFBD>><3E>D<>D<>F<>G<EFBFBD><16>!<21>!<21>%<25>(<28>7;<3B>w<EFBFBD><EFBFBD>'<27>-<2D>-<2D><04>a<EFBFBD>0<><11>3<>G<EFBFBD>TU<54>TV<54>K<EFBFBD><07>9><3E>'<27>9I<39>'<27>.<2E>.<2E><15><01>2<>1<EFBFBD>5<>w<EFBFBD><07><19>Z<EFBFBD>Z<EFBFBD><07>(<28>F<EFBFBD> *<2A>6<EFBFBD>4<EFBFBD> 8<>f<EFBFBD>v<EFBFBD>h<EFBFBD>G<EFBFBD>4;<3B><<3C>G<EFBFBD>D<EFBFBD>M<EFBFBD>$<24>'<27>G<EFBFBD><<3C> <<3C> '<27><1B>/<2F>/<2F><13>"<22>5<>d<EFBFBD> K<> L<>L<><4C> =<3D><> <14>'<27> <0A>!<21>!<21><13>%<25>&<26>&<26><>'<27>s+<00>&D J<00>1J<04>J<00>J<00> J:<03>"J5<03>5J:c<00><><00><01>|rd|vr ddddddd<08>Si}|dD]F}|d }||jd
<EFBFBD>d k(rd nd z }|jd<0E>r |d|d<00><00>z }|||d<<00>H<00>ryt<00>fd<11>|jdg<00>D<00>d<00>}|rRd|vrN|dD]F}|d }||jd
<EFBFBD>d k(rd nd z }|jd<0E>r |d|d<00><00>z }|||d<<00>H|S)Nr&u名称u品牌u价格(数字)u年份(数字)u规格参数(JSON对象)u 简介描述)r$<00>brand<6E>price<63>year<61>specsrT<00>label<65> input_style<6C>longu (长文本)u(文本)rTz - <20>keyc3<00>4<00>K<00>|]}|d<00>k(s<01> |<01><01><00>y<01>wr r )r <00>sr0s <20>rrz _build_fields.<locals>.<genexpr><3E>s<00><><00><><00>\<5C>"><3E>Q<EFBFBD>!<21>D<EFBFBD>'<27>^<5E>B[<5B>q<EFBFBD>"><3E>r<00> subcategories<65> extra_fields)r+r*)r2r0r&<00>field<6C>desc<73>subcats ` rr,r,<00>s-<00><><00> <0E>(<28>#<23>%<25><1C>x<EFBFBD>:J<>$<24>/I<>)<29>
<EFBFBD>
<EFBFBD>
<10>F<EFBFBD><14>X<EFBFBD><1D><05><14>W<EFBFBD>~<7E><04> <0C><15><19><19>=<3D>!9<>V<EFBFBD>!C<> <0A><1A>S<><04> <10>9<EFBFBD>9<EFBFBD>]<5D> #<23> <10>c<EFBFBD>%<25> <0A>.<2E>/<2F>0<> 0<>D<EFBFBD>#<23><06>u<EFBFBD>U<EFBFBD>|<7C><1C> <1F><16><15>\<5C>#<23>'<27>'<27>/<2F>2<EFBFBD>"><3E>\<5C>^b<>c<><06> <11>n<EFBFBD><06>.<2E><1F><0E>/<2F><05><1C>W<EFBFBD>~<7E><04><14><15><19><19>=<3D>)A<>V<EFBFBD>)K<> <0A>Q[<5B>[<5B><04><18>9<EFBFBD>9<EFBFBD>]<5D>+<2B><18>c<EFBFBD>%<25> <0A>"6<>!7<>8<>8<>D<EFBFBD>'+<2B><06>u<EFBFBD>U<EFBFBD>|<7C>$<24> 0<> <12>Mr5<00>img_srcc<00><><00> t|jdd<02>z }|j<00>r<>t|d<03>5}t j
|j <00><00>j<00>}ddd<00>|jj<00>jd<04>}d|dk(rdn|<04><00>}d|<05>d <03><00>S y#1swY<00>HxYw#t$rYywxYw)
Nz/static/uploads/r%<00>rb<72>.zimage/<2F>jpg<70>jpegr>z;base64,) r<00>replace<63>exists<74>open<65>base64<36> b64encode<64>read<61>decode<64>suffix<69>lower<65>lstriprd)r<><00>img_path<74>f<>img_data<74>ext<78>mimes rr[r[<00>s<><00><00>  <0A><1D><07><0F><0F>0B<30>B<EFBFBD> G<>G<><08> <13>?<3F>?<3F> <1C><15>h<EFBFBD><04>%<25><11>!<21>+<2B>+<2B>A<EFBFBD>F<EFBFBD>F<EFBFBD>H<EFBFBD>5<><<3C><<3C>><3E><08>&<26><1A>/<2F>/<2F>'<27>'<27>)<29>0<>0<><13>5<>C<EFBFBD><1B>c<EFBFBD>U<EFBFBD>l<EFBFBD>F<EFBFBD><03><<3C>=<3D>D<EFBFBD><1A>4<EFBFBD>&<26><08><18>
<EFBFBD>3<> 3<> <1D> <10>&<26>%<25><>
<15> <0A> <0C> <0F> <0A>s)<00>5B<<00>2B0<03>)AB<<00>0B9<07>5B<<00>< C<03>Crq<00>returnc<00><><00>i}|j<00>D]H\}}|<03><01> |dk7s<01>|dk7s<01>t|t<00>r d|vr t|<03>n
t |<03>||<<00>D|||<<00>J|S#t
t f$r|||<Y<00>cwxYw)Nr%<00>nullr<6C>)<07>itemsrXrY<00>float<61>int<6E>
ValueError<EFBFBD> TypeError)rq<00>cleaned<65>k<>vs rrcrc<00>s<><00><00><10>G<EFBFBD><14>
<EFBFBD>
<EFBFBD> <0C><04><01>1<EFBFBD> <0C>=<3D>Q<EFBFBD>"<22>W<EFBFBD><11>f<EFBFBD><1B><19>!<21>S<EFBFBD>!<21>#<23>-0<>A<EFBFBD>X<EFBFBD><15>q<EFBFBD><18>3<EFBFBD>q<EFBFBD>6<EFBFBD>G<EFBFBD>A<EFBFBD>J<EFBFBD><1F><07><01>
<EFBFBD><1D> <13>N<EFBFBD><4E> #<23>I<EFBFBD>.<2E>#<23>!"<22>G<EFBFBD>A<EFBFBD>J<EFBFBD>#<23>s<00>A <02> A7<05>6A7)NN)NNNN)<11>__doc__r-r<>r\<00>configrr<00>utilsrrr4rsr,rYr[<00>dictrcr r5r<00><module>r<>sW<00><01><04> <0C> <0A><0F>.<2E>+<2B> <06>FBF<01>6:<3A>fM<01>V<12>6 <10>s<EFBFBD> <10> <13><04> <13><14> r5