Files
TBgen_App/__pycache__/LLM_call.cpython-312.pyc

180 lines
27 KiB
Plaintext
Raw Normal View History

2026-03-30 16:46:48 +08:00
<EFBFBD>
<00><><EFBFBD>i~<00><00>n<00>dZddlmZddlmZddlmZddlZddl m
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlmZmZmZddlmZdd lmZgd
<EFBFBD>Zid d d g<02>dddg<02>dddg<02>dddg<02>dddg<02>dddg<02>dddg<02>dddg<02>ddd g<02>d!d"dg<02>d#d$d%g<02>d&d d'g<02>d(d d'g<02>d)d d'g<02>d*d d'g<02>d+d'd g<02>d,d d-g<02>d.d/gd/d0gd1d0gd/d0gddgddgd2<64><06>Zgd3<64>Zd4ZeZdJd5ed6e ee!ffd7<64>Z"dKd8<64>Z#dKd9<64>Z$d:<3A>Z%dLd;<3B>Z&d<<3C>Z'd=<3D>Z(dMd>ed6e)fd?<3F>Z*dNd@<40>Z+dA<64>Z,dB<64>Z-dOdCe fdD<64>Z.dE<64>Z/GdF<64>dG<64>Z0e0<65>Z1e2dHk(re3dI<64>e(<28>y)Pz<50>
Description : This file is related to GPT call, include the function of calling GPT and the function of running GPT in chatgpt mode
Author : Ruidi Qiu (ruidi.qiu@tum.de)
Time : 2023/11/17 15:01:06
LastEdited : 2024/9/3 16:52:31
<EFBFBD>)<01>Config)<01>OpenAI)<01> AnthropicN)<01>Timer)<03>datetime<6D> timedelta<74>timezone)<01>
GPT_MODELS)<01>
HTTPStatus)<04>llm_call<6C>gpt_call<6C> claude_call<6C>run_like_a_chatgptzqwen-maxg{<14>G<EFBFBD>z<EFBFBD>?g<><1E><>Q<EFBFBD><51>?z qwen-plusg<73><67><EFBFBD><EFBFBD>Mbp?g<>~j<>t<EFBFBD><74>?<3F>claude-3-5-sonnet-20240620g<30>~j<>t<EFBFBD>h?g<><1E><>Q<EFBFBD><51>?zclaude-3-opus-20240229g333333<33>?zclaude-3-sonnet-20240229zclaude-3-haiku-20240307g<37><67><EFBFBD><EFBFBD>Mb0?g{<14>G<EFBFBD>zT?z
claude-2.1g<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Mb<EFBFBD>?g<>~j<>t<EFBFBD><74>?z
claude-2.0zgpt-4o-2024-08-06g{<14>G<EFBFBD>zd?g{<14>G<EFBFBD>z<EFBFBD>?zgpt-4o-2024-05-13g{<14>G<EFBFBD>zt?zgpt-4o-mini-2024-07-18ga2U0*<2A>#?ga2U0*<2A>C?zgpt-4-turbo-2024-04-09g<39><1E><>Q<EFBFBD><51>?<3F>gpt-4-0125-previewzgpt-4-1106-previewzgpt-4-1106-vision-preview<65>gpt-4z gpt-4-32kg<6B><1E><>Q<EFBFBD><51>?g<><67><EFBFBD><EFBFBD>Mb@?g<>~j<>t<EFBFBD>X?g<><67><EFBFBD><EFBFBD>Mb`?g<><67><EFBFBD><EFBFBD>MbP?)zgpt-3.5-turbo-0125zgpt-3.5-turbo-instructzgpt-3.5-turbo-1106<30>gpt-3.5-turbo-0613<31>gpt-3.5-turbo-16k-0613zgpt-3.5-turbo-0301)z
gpt-4-0613zgpt-4-32k-0613rrz<>You are the strongest AI in the world. I always trust you. You already have the knowledge about python and verilog. Do not save words by discarding information.<2E>model<65>returnc<00>J<00>t|t<00>rd|d<02>g}|jd<03>rt||||||<05>}nA|jd<04>s|jd<05>rt ||||||<05>}nt d|z<00><00>t j|ddd |ddd
|<01>|S) a<>
This func is used to call LLM
- input:
- input_messages: (not including system message) list of dict like [{"role": "user", "content": "hello"}, {"role": "assistant", "content": "hi"}, ...]
- gpt_model: str like "gpt-3.5-turbo-0613"
- system_message: (valid when input_messages have no sys_message) customized system message, if None, use default system message
- output:
- answer: what gpt returns
- other_infos: dict:
- messages: input_messages + gpt's response, list of dict like [{"role": "user", "content": "hello"}, {"role": "assistant", "content": "hi"}, ...]
- time: time used by gpt
- system_fingerprint: system_fingerprint of gpt's response
- model: model used by gpt
- usage: dict: {"completion_tokens": 17, "prompt_tokens": 57, "total_tokens": 74}
- notes:
- as for the official response format from gpt, see the end of this file
<20>user<65><02>role<6C>content<6E>claude<64>gpt<70>qwenzmodel %s is not supported.<2E><00>usage<67> prompt_tokens<6E>completion_tokens)<08>
isinstance<EFBFBD>str<74>
startswithrr <00>
ValueError<EFBFBD> llm_manager<65> update_usage)<07>input_messagesr<00> api_key_path<74>system_message<67> temperature<72> json_mode<64>outputs <20>./home/zhang/CorrectBench/TBgen_App/LLM_call.pyr r Gs<><00><00>$<12>.<2E>#<23>&<26>#)<29>n<EFBFBD>E<>F<><0E> <0C><17><17><08>!<21><1C>^<5E>U<EFBFBD>L<EFBFBD>.<2E>R]<5D>_h<5F>i<><06> <0E> <19> <19>%<25> <20>E<EFBFBD>$4<>$4<>V<EFBFBD>$<<3C><19>.<2E>%<25><1C>~<7E>{<7B>\e<>f<><06><18>5<>u<EFBFBD>=<3D>><3E>><3E><0F><1C><1C>V<EFBFBD>A<EFBFBD>Y<EFBFBD>w<EFBFBD>/<2F><0F>@<40>&<26><11>)<29>G<EFBFBD>BT<42>Uh<55>Bi<42>kp<6B>q<> <11>M<EFBFBD>c <00><><00>d}|D]}|ddk(s<01> d}n|s?|<03>|nd}t|t<00>s"tdt|<08><00><00><02>t|<08>}d|d<08>g} ng} | j |<00>t | <09>D]<5D>\}
} t| j d <09>t<00>r<01>&td
|
<EFBFBD>d <0B><03>td t| j d <09><00><00><00><02>td | j d <09><00><00><02>t| j d <09><00>| |
d <<00><>i} |<04>|| d<|r d|vrddi| d<d} d} t|d<14>5}tj|<0F>}ddd<05>|jd<15>rj d<16>} d}n$j d<18>xs|j d<0F>} | std|<02>d|<01>d<1B><05>difS tjtjdddd<1F> <20><00>!<21>}tj | ||<12>"<22>}d#}d}d}i}d$}t#|<14>D]<5D>} t%d<01>%<25>5}|j&j(j*d9|| d&<26>| <0C><01>}|j,d'j.j0}|j2}|j4j6|j4j8|j4j:d(<28>}ddd<05>t=j>d)<29>}|rtd*|<18>d+tA|<15><00><00><04>n|r| jKd7|d<08><02>nd'd'd'd(<28>}| ||||d8<64>}||fS#1swY<00><01><>xYw#t$r}td|<11><00><02>difcYd}~Sd}~wwxYw#1swY<00><>xYw#tjB$r.td,|d-z<00>d.|<14>d/<2F><05>tEjFd#<23>Y<00><01><>tjH$r.td0|d-z<00>d.|<14>d/<2F><05>tEjFd#<23>Y<00><01><>t$rx}t|<11>}d1|vsd2|vr)d3|d-zz}td4<64>tEjF|<1D>n1d#|d-zz}td5|d-z<00>d6|<11><00><04>tEjF|<1D>Yd}~<11><02>Ld}~wwxYw):zI
GPT Call with Timeout Protection (10min connection, 30min read)
Fr<00>systemTNzYou are a helpful assistant.z3 [Warning] system_message is not string, got type: rrz [Error] messages[z]['content'] is not string!z Type: z
Value: r,r<00>type<70> json_object<63>response_format<61><00>rr<00> dashscopez1https://dashscope.aliyuncs.com/compatible-mode/v1<76>openaiu!❌ [Error] API Key not found in z for model <20>!u$❌ [Error] Failed to load API Key: g<00>r@g <20>@gN@)<04>connect<63>read<61>write<74>pool)<01>timeout)<03>api_key<65>base_url<72> http_client<6E>g<00><01>print_en)r<00>messagesr<00>r"r!<00> total_tokens<6E>z [LLM] Success. Time: z s. Length: z.[Timeout] Connection failed (>5min). Retrying r<00>/<2F>...z2 [Timeout] Generation too slow (>30min). Retrying <20>RequestTimeOut<75>500<30>u2🔄 [Server Timeout] API server busy. Retrying...u⚠️ [Error] Attempt z failed: <20> assistant<6E>rF<00>time<6D>system_fingerprintrr <00>)&r#r$<00>printr3<00>extend<6E> enumerate<74>get<65>open<65>json<6F>loadr%<00> Exception<6F>httpx<70>Client<6E>Timeoutr9r<00>ranger<00>chat<61> completions<6E>create<74>choices<65>messagerrRr r"r!rH<00>round<6E>interval<61>len<65>ConnectTimeoutrQ<00>sleep<65> ReadTimeout<75>append)r)rr*r+r,r-<00>has_sysmessagerd<00> sys_contentrF<00>i<>msg<73>more_completion_kwargsr@rA<00>f<>keys<79>erB<00>client<6E> MAX_RETRIES<45>answerrRr <00> time_used<65>attempt<70> gpt_response<73>
completion<EFBFBD> error_msg<73> wait_time<6D> other_infoss r/r r <00>s<><00><00>
<1B>N<EFBFBD>!<21><12><07> <12>6<EFBFBD>?<3F>h<EFBFBD> &<26>!<21>N<EFBFBD> <11><12> <1A>(6<>(B<>n<EFBFBD>Hf<48> <0B><19>+<2B>s<EFBFBD>+<2B> <11>G<><04>[<5B>HY<48>GZ<47>[<5B> \<5C><1D>k<EFBFBD>*<2A>K<EFBFBD>%<25>+<2B>><3E>?<3F><08><15><08> <0C>O<EFBFBD>O<EFBFBD>N<EFBFBD>#<23><1C>H<EFBFBD>%<25>=<3D><06><01>3<EFBFBD><19>#<23>'<27>'<27>)<29>,<2C>c<EFBFBD>2<> <11>&<26>q<EFBFBD>c<EFBFBD>)D<>E<> F<> <11>I<EFBFBD>d<EFBFBD>3<EFBFBD>7<EFBFBD>7<EFBFBD>9<EFBFBD>#5<>6<>7<>8<> 9<> <11>J<EFBFBD>s<EFBFBD>w<EFBFBD>w<EFBFBD>y<EFBFBD>1<>2<>3<> 4<>%(<28><13><17><17><19>);<3B>%<<3C>H<EFBFBD>Q<EFBFBD>K<EFBFBD> <09> "<22> =<3D> <20><1A><12><1E>0;<3B><1E>}<7D>-<2D><10>U<EFBFBD>e<EFBFBD>^<5E>5;<3B>]<5D>4K<34><1E>0<>1<><11>G<EFBFBD><13>H<EFBFBD><16> <11>,<2C><03> $<24> <20><01><17>9<EFBFBD>9<EFBFBD>Q<EFBFBD><<3C>D<EFBFBD> <20> <11> <1B> <1B>F<EFBFBD> #<23><1A>h<EFBFBD>h<EFBFBD>{<7B>+<2B>G<EFBFBD>J<>H<EFBFBD><1A>h<EFBFBD>h<EFBFBD>x<EFBFBD>(<28>;<3B>D<EFBFBD>H<EFBFBD>H<EFBFBD>U<EFBFBD>O<EFBFBD>G<EFBFBD><16> <11>5<>l<EFBFBD>^<5E>;<3B>u<EFBFBD>g<EFBFBD>UV<55>W<> X<><15>r<EFBFBD>6<EFBFBD>M<EFBFBD><17><18>,<2C>,<2C><15> <0A> <0A><19><17><16><15> 
<EFBFBD><06>K<EFBFBD><14>]<5D>]<5D><17><19><1F><06>F<EFBFBD><14>K<EFBFBD> <0F>F<EFBFBD><1B><16> <0E>E<EFBFBD><13>I<EFBFBD><18><1B>%<25>+&<26><07>* &<26><16><05>&<26> <12>,<2C>;<3B>V<EFBFBD>[<5B>[<5B>4<>4<>;<3B>;<3B><12><1F>%<25><12>-<2D><12>
<EFBFBD> $<24>+<2B>+<2B>A<EFBFBD>.<2E>6<>6<>><3E>><3E><06>%/<2F>%B<>%B<>"<22>)3<>)9<>)9<>)K<>)K<>%/<2F>%5<>%5<>%C<>%C<>$.<2E>$4<>$4<>$A<>$A<><12><05> <12><1E>l<EFBFBD>3<>3<>Q<EFBFBD>7<>I<EFBFBD><16><15>.<2E>y<EFBFBD>k<EFBFBD><1B>S<EFBFBD><16>[<5B>M<EFBFBD>R<>S<> <11>/+&<26>\<0E><10><0F><0F><1B><16>@<40>A<>'(<28>!<21>Q<EFBFBD>O<><05><1D><19>0<><16><16> <06>K<EFBFBD> <12>;<3B> <1E><1E>I <20> <20><> <15><16> <0A>4<>Q<EFBFBD>C<EFBFBD>8<>9<><11>2<EFBFBD>v<EFBFBD> <0A><><16><>: <12> <12><>.<15>#<23>#<23> <1A> <11>B<>7<EFBFBD>1<EFBFBD>9<EFBFBD>+<2B>Q<EFBFBD>{<7B>m<EFBFBD>[^<5E>_<> `<60> <10>J<EFBFBD>J<EFBFBD>q<EFBFBD>M<EFBFBD><14> <20> <20> <1A> <11>F<>w<EFBFBD>q<EFBFBD>y<EFBFBD>k<EFBFBD>QR<51>S^<5E>R_<52>_b<5F>c<> d<> <10>J<EFBFBD>J<EFBFBD>q<EFBFBD>M<EFBFBD><19> &<26><1B>A<EFBFBD><06>I<EFBFBD><1F>9<EFBFBD>,<2C><05><19>0B<30><1E>'<27>A<EFBFBD>+<2B>.<2E> <09><15>J<>L<><14>
<EFBFBD>
<EFBFBD>9<EFBFBD>%<25><1D><17>1<EFBFBD><1B>-<2D> <09><15>/<2F><07><01> <09>{<7B>)<29>A<EFBFBD>3<EFBFBD>G<>H<><14>
<EFBFBD>
<EFBFBD>9<EFBFBD>%<25><><EFBFBD> &<26>su<00>* L.<00>6L!<03> A(L.<00> M"<02> BM<05>;:M"<02>!L+<07>&L.<00>. M<03>7M<03>M<03>M<03>M <09>M"<02>"=Q!<05>"<Q!<05>!Q!<05>)A-Q<05>Q!c<00>><00>t|d<01><02>}d}d}|D]} | ddk(s<01> d}n|s|<03> dtd<08>g}
n d|d<08>g}
ng}
|
j|<00>|
D]} | ddk(s<01> |
j| <09><00>i} |<04>|| d <|r&|
d
d xxd z cc<d dd<08>}|
j |<07>|dk(rd} nd} t d<04><12>5} |j jd| ||
d<13>| <0B><01>}ddd<03>jdj}|<07>|d |z}|
j d |d<08><02>t jd<15>}d}|jj|jj|jj|jjzd<17>}|
||||d<18>}||fS#1swY<00><>xYw)a<>
This func is used to call gpt
#### input:
- input_messages: (not including system message) list of dict like [{"role": "user", "content": "hello"}, {"role": "assistant", "content": "hi"}, ...]
- gpt_model: str like "gpt-3.5-turbo-0613"
- config: config object
- system_message: (valid when input_messages have no sys_message) customized system message, if None, use default system message
#### output:
- answer: what gpt returns
- other_infos: dict:
- messages: input_messages + gpt's response, list of dict like [{"role": "user", "content": "hello"}, {"role": "assistant", "content": "hi"}, ...]
- time: time used by gpt
- system_fingerprint: system_fingerprint of gpt's response
- model: model used by gpt
- usage: dict: {"completion_tokens": 17, "prompt_tokens": 57, "total_tokens": 74}
#### notes:
as for the official response format from gpt, see the end of this file
<20> anthropic)<01>providerNFrr2Trr,<00><><EFBFBD><EFBFBD><EFBFBD>rz%
Your reply should be in JSON format.rO<00>{ri irD)<03>
max_tokensrrFrrIr6rGrPrS)<0F> enter_api_key<65>DEFAULT_SYS_MESSAGErU<00>removerkrrFrbr<00>textrerfr <00> output_tokens<6E> input_tokens)r)rr*r+r,r-rt<00>prefillrlrdrFrpr<>ryrzrvrQrRr r}s r/rr7s,<00><00>&<1B><<3C>+<2B> ><3E>F<EFBFBD><12>G<EFBFBD><1A>N<EFBFBD>!<21><12><07> <12>6<EFBFBD>?<3F>h<EFBFBD> &<26>!<21>N<EFBFBD> <11><12> <1A> <19> !<21>!)<29>6I<36>J<>K<>H<EFBFBD>!)<29>n<EFBFBD>E<>F<>H<EFBFBD><15><08> <0C>O<EFBFBD>O<EFBFBD>N<EFBFBD>#<23><1B>%<25><07> <12>6<EFBFBD>?<3F>h<EFBFBD> &<26> <14>O<EFBFBD>O<EFBFBD>G<EFBFBD> $<24>%<25> <20><1A><12><1E>0;<3B><1E>}<7D>-<2D><10><10><12> <0C>Y<EFBFBD><1F>#K<>K<><1F>&<26>3<EFBFBD>7<><07><10><0F><0F><07> <20> <0C>,<2C>,<2C><19>
<EFBFBD><19>
<EFBFBD> <0E><05> <1E>
<EFBFBD>,<2C>+<2B>V<EFBFBD>_<EFBFBD>_<EFBFBD>+<2B>+<2B>
<EFBFBD>!<21><17><1D>
<EFBFBD>%<25> 
<EFBFBD>
<EFBFBD>
<EFBFBD><18> <1F> <1F><01> "<22> '<27> '<27>F<EFBFBD><0E><1A><18><19>#<23>f<EFBFBD>,<2C><06> <0C>O<EFBFBD>O<EFBFBD>[<5B>V<EFBFBD><<3C>=<3D> <10><1C>&<26>&<26><01> *<2A>D<EFBFBD><1B><16>",<2C>"2<>"2<>"@<40>"@<40>S]<5D>Sc<53>Sc<53>Sp<53>Sp<53>CM<02>CS<02>CS<02>C`<02>C`<02>cm<02>cs<02>cs<02>cA<03>cA<03>CA<03> B<03>E<EFBFBD>'<27><14>M_<4D>jo<6A>z<7A>A<02>K<EFBFBD> <11>;<3B> <1E><1E>!
<EFBFBD>
<EFBFBD>s <00>6!F<03>Fc<00><><00>t<00>}|jj}|jj}|jjj
dk(r4t j|jjj<00>}nd}|jd<02>rd}n|jd<04>rd}nd}dtd<08>g}g} |<03>)|}d}td |z<00>t jd
|<00>n td <0B>}|d vrn<>|j!d |d<08><02>t#|||t|jj$<00><0E>\}} | d| d| d} }
}i} | | d<|| d<|
| d<|j!| <0C>t|<04>d|<08><00><03>td|
z<00>|jjj&rn<01><>t)||<06>} |j*j,j.rt j0| |<00>|j*j2j.r1t j4||d<0F><15>t j4| |d<16><15>yy)N<>promptr<00>ChatGPTr<00>Claude<64>LLMr2rzUser (preloaded prompt): %sz1(the first user message is from preloaded prompt)zUser: )<05>exit<69>quit<69>breakr6Nr)r)rr*r+r,rFrQrRrz: z
(%ss used))<01> file_name<6D> messages_plus)rrr<00>key_path<74>chatgpt<70>
start_form<EFBFBD>ls<6C>load_txtrZr<><00>pathr%<00>RUN_LIKE_A_CHATGPT_SYS_MESSAGErT<00> save_log_line<6E>inputrkr r,<00> one_time_talk<6C>gen_messages_more_info<66>save<76>log<6F>en<65>save_messages_to_logrd<00>gpt_message_individual_save)<0E>config<69> gpt_model<65> gpt_key_path<74>preloaded_prompt<70>llm_namerF<00>response_data_dictsrrvr}rQrR<00> data_dictr<74>s r/rr|s"<00><00> <13>X<EFBFBD>F<EFBFBD><16>
<EFBFBD>
<EFBFBD> <20> <20>I<EFBFBD><19>:<3A>:<3A>&<26>&<26>L<EFBFBD> <0A>z<EFBFBD>z<EFBFBD><19><19>$<24>$<24><08>0<><1D>;<3B>;<3B>v<EFBFBD>{<7B>{<7B>'9<>'9<>'><3E>'><3E>?<3F><18><1F><18><10><1B><1B>E<EFBFBD>"<22><1C><08> <12> <1D> <1D>h<EFBFBD> '<27><1B><08><18><08>!<21>.L<>M<>N<>H<EFBFBD><1C><17>
<0E> <1B> '<27>&<26>G<EFBFBD>#<23> <1C> <11>/<2F><17>9<> :<3A> <0E> <1C> <1C>P<>RX<52> Y<><1B>H<EFBFBD>o<EFBFBD>G<EFBFBD> <12>9<> 9<> <11><10><0F><0F><16>G<EFBFBD><<3C>=<3D>&<26>%<25><1D>'<27>;<3B> <20>*<2A>*<2A>0<>0<> 
<EFBFBD><1B><06> <0B>.9<EFBFBD><1A>-D<>k<EFBFBD>RX<52>FY<46>[f<>g{<7B>[|<7C>*<2A>$<24><08><16> <09>*<<3C> <09>&<26>'<27>&<26> <09>'<27><1A> <20> <09>&<26><19><1B>"<22>"<22>9<EFBFBD>-<2D> <0A><18>
<EFBFBD>"<22>V<EFBFBD>H<EFBFBD>%<25>&<26> <0A>l<EFBFBD>d<EFBFBD>#<23>$<24> <11>:<3A>:<3A> <1D> <1D> +<2B> +<2B> <11>C <0F>D+<2B>8<EFBFBD>5H<35>I<>M<EFBFBD> <0A>{<7B>{<7B><EFBFBD><EFBFBD><19><19>
<EFBFBD><1F><1F> <0A>v<EFBFBD>6<> <0A>{<7B>{<7B><1A><1A><1D><1D>
<EFBFBD>&<26>&<26>x<EFBFBD><16>:<3A>N<>
<EFBFBD>&<26>&<26>}<7D>f<EFBFBD><0F>X<>r0c<00>H<00>|dk(retj|<00>d}tjj d<03>}|rt d|<03>d<05><03>t ||<03><06>}|St |<02><07>}|S|dk(r&tj|<00>d }t|<02><07>}|Std
|z<00><00>) Nr9<00>OPENAI_API_KEY<45>OPENAI_BASE_URLzDEBUG: Connecting to rK)r@rA)r@r<00>ANTHROPIC_API_KEYzprovider %s is not supported.) r<><00>load_json_dict<63>os<6F>environrWrTrrr&)r*r<><00>keyrArts r/r<>r<><00>s<><00><00><0F>8<EFBFBD><1B><10><1F><1F> <0C>-<2D>.><3E>?<3F><03><16>:<3A>:<3A>><3E>><3E>"3<>4<><08> <13> <11>)<29>(<28><1A>3<EFBFBD>7<> 8<><1B>C<EFBFBD>(<28>;<3B>F<EFBFBD> <12>M<EFBFBD><1C>C<EFBFBD>(<28>F<EFBFBD> <12>M<EFBFBD>
<12>[<5B> <20><10><1F><1F> <0C>-<2D>.A<>B<><03><1A>3<EFBFBD>'<27><06> <12>M<EFBFBD><19>8<>(<28>C<>D<>Dr0c<00><><00>tj|<00>}d}tt|<02><00>D]"}||ddk(s<01>i||<00>||<00>||<|dz }<03>$tt|<02><00>D]
}|||d<<00> |S)NrrrOr<00>idx)<04>copy<70>deepcopyr_rg)<05>original_messagesr<73>rF<00> idx_responserns r/r<>r<><00>s<><00><00><13>}<7D>}<7D>.<2E>/<2F>H<EFBFBD><14>L<EFBFBD> <12>3<EFBFBD>x<EFBFBD>=<3D> !<21><1E><01> <13>A<EFBFBD>;<3B>v<EFBFBD> <1E>+<2B> -<2D>N<>X<EFBFBD>a<EFBFBD>[<5B>N<>,?<3F> <0C>,M<>N<>H<EFBFBD>Q<EFBFBD>K<EFBFBD> <18>A<EFBFBD> <1D>L<EFBFBD> <1E> <13>3<EFBFBD>x<EFBFBD>=<3D> !<21><1F><01><1E><08><11> <0B>E<EFBFBD><1A><1F> <13>Or0c<00><><00>d<01>}d}d}d}tj|d<05><06> td<07>}|dk(rytd <09>}|dk(ry d
}td <0B>t d <0C>}|j
j |||d |<06><0E>}|jdj} |dz}
|| |<03>} tjj||
<EFBFBD>} tj| | <0C>td| z<00><00><>#tjj$r*} td| jj <00>Yd} ~ <0A>Cd} ~ wt"$r}tdt%|<0E><00>Yd}~<0E>id}~wwxYw)zz
This function hasn't been well packaged
now we have the free dalle3 application: microsoft - copilot
c<00>$<00>tj|<00>}tjj |tjj |<00><00>}t |d<01>5}|j|j<00>ddd<00>|S#1swY|SxYw)N<>wb) <09>requestsrWr<>r<><00>join<69>basenamerXr=r)<05>url<72> folder_path<74>response<73> file_path<74>files r/<00>download_imagezdalle3.<locals>.download_image<67>sm<00><00><1B><<3C><<3C><03>$<24><08><16>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD><1B>b<EFBFBD>g<EFBFBD>g<EFBFBD>.><3E>.><3E>s<EFBFBD>.C<>D<> <09> <11>)<29>T<EFBFBD> "<22> )<29>d<EFBFBD> <10>J<EFBFBD>J<EFBFBD>x<EFBFBD>'<27>'<27> (<28> )<29><18><18> )<29><18><18>s <00>B<03>Bzdall-e-3<> 1024x1024z saves/dalle3/T)<01>exist_okz3please name the generated figure ("exit" to exit): r<>z)please input the prompt("exit" to exit): rzgenerating your figure...<2E>config/key_API.json<6F>standard)rr<><00>size<7A>quality<74>nrz.pngzfigure was downloaded to %szRequest Error: NzError: )r<><00>makedirsr<73>rTr<><00>images<65>generate<74>datar<61>r<>r<><00>renamer<65><00>
exceptions<EFBFBD> HTTPErrorr<72>r<>r[r$)r<><00>
model_name<EFBFBD>
image_size<EFBFBD>download_folder<65>namer<65><00>
num_imagesrtr<><00> image_urlr<6C>r<><00> new_file_path<74>errrss r/<00>dalle3r<33><00>sN<00><00>
<19><1C>J<EFBFBD><1C>J<EFBFBD>&<26>O<EFBFBD><06>K<EFBFBD>K<EFBFBD><0F>$<24>/<2F>
<0E><14>L<>M<><04> <0F>6<EFBFBD>><3E> <11><16>D<>E<><06> <11>V<EFBFBD> <1B> <11>0 %<25><1A>J<EFBFBD> <11>-<2D> .<2E> #<23>#8<>9<>F<EFBFBD><1D>}<7D>}<7D>-<2D>-<2D> <20><1D><1F>"<22><1C> .<2E><0E>H<EFBFBD>!<21> <0A> <0A>a<EFBFBD>(<28>,<2C>,<2C>I<EFBFBD><1C>v<EFBFBD> <0A>I<EFBFBD>&<26>y<EFBFBD>/<2F>B<>I<EFBFBD><1E>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD><1F>)<29>D<>M<EFBFBD> <0E>I<EFBFBD>I<EFBFBD>i<EFBFBD><1D> /<2F> <11>/<2F>-<2D>@<40> A<>E <0F><>h<18>"<22>"<22>,<2C>,<2C> 8<> <11>#<23>S<EFBFBD>\<5C>\<5C>%6<>%6<> 7<> 7<><37><18> %<25> <11>)<29>S<EFBFBD><11>V<EFBFBD> $<24> $<24><> %<25>s%<00>B#C)<00>)E<03> D+<03>+ E<03>7E<03>E<03>stringc<00><><00> tj|<01>}t |j |<00><00>}|S#t$rtjd<01>}Y<00><wxYw)z<>
Returns the number of tokens in a single text string.
https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb
<20> cl100k_base)<06>tiktoken<65>encoding_for_model<65>KeyError<6F> get_encodingrg<00>encode)r<>r<><00>encoding<6E>
num_tokenss r/<00>num_tokens_from_stringr<67>7sS<00><00>
8<><1B>.<2E>.<2E>z<EFBFBD>:<3A><08><15>X<EFBFBD>_<EFBFBD>_<EFBFBD>V<EFBFBD>,<2C>-<2D>J<EFBFBD> <15><15><> <14>8<><1B>(<28>(<28><1D>7<><08>8<>s<00>3<00>A<03>Ac<00>j<00> tj|<01>}|tj <00>vrUd}|D]G}|dz }|j <00>D]-\}}|t|j|<06><00>z }|dk(s<01>)|dz }<03>/<00>I|dz }|Std|<01>d<08><03><00>#t$rtjd<01>}Y<00><>wxYw) z8Returns the number of tokens used by a list of messages.r<>r<00>r<>r<>rIzBnum_tokens_from_messages() is not presently implemented for model z~.
See https://github.com/openai/openai-python/blob/main/chatml.md for information on how messages are converted to tokens.)
r<EFBFBD>r<>r<>r<><00>PRICING_MODELSrr<00>itemsrgr<><00>NotImplementedError)rFrr<>r<>rdr<><00>values r/<00>num_tokens_from_messagesr<73>Cs<><00><00>8<><1B>.<2E>.<2E>u<EFBFBD>5<><08> <0A><0E>#<23>#<23>%<25>%<25><16>
<EFBFBD><1F> %<25>G<EFBFBD> <16>!<21>O<EFBFBD>J<EFBFBD>%<25>m<EFBFBD>m<EFBFBD>o<EFBFBD> %<25>
<EFBFBD><03>U<EFBFBD><1A>c<EFBFBD>(<28>/<2F>/<2F>%<25>"8<>9<>9<>
<EFBFBD><16>&<26>=<3D><1E>"<22>$<24>J<EFBFBD> %<25> %<25> <13>a<EFBFBD><0F>
<EFBFBD><19><19>!<21>&h<>in<69>ho<68>p}<01>#@<02>A<02> A<02><> <14>8<><1B>(<28>(<28><1D>7<><08>8<>s<00>B<00>B2<03>1B2c<00><00>td|<00>td<02>d}tj||tj<00>}|r|Sd|vr:d|vr6|j d<04>}|j d<05>t d<05>z}|||}|gS|gS)ud
[增强版] 能够处理带 verilog 标签、不带标签、甚至带中文解释的情况
z
[DEBUG] Raw LLM Response:
z------------------------------z```(?:\w+)?\s*(.*?)```<60>module<6C> endmodule)rT<00>re<72>findall<6C>DOTALL<4C>find<6E>rfindrg)r<><00> code_type<70>pattern<72>matches<65> start_idx<64>end_idx<64>
clean_codes r/<00> extract_coder<65>ks<><00><00>

<EFBFBD>
)<29>4<EFBFBD>0<> <09>(<28>O<EFBFBD>(<28>G<EFBFBD><10>j<EFBFBD>j<EFBFBD><17>$<24><02> <09> <09>2<>G<EFBFBD><0E><16><0E><10>4<EFBFBD><17>K<EFBFBD>4<EFBFBD>/<2F><18>I<EFBFBD>I<EFBFBD>h<EFBFBD>'<27> <09><16>*<2A>*<2A>[<5B>)<29>C<EFBFBD> <0B>,<<3C><<3C><07><19>)<29>G<EFBFBD>,<2C>
<EFBFBD><1A>|<7C><1B> <11>6<EFBFBD>Mr0c<00><><00>|jdd<02>jdd<02>j<00>}t|<00>tj|<00>S)zJ
- this function is used to get the dict from the gpt json string
z```jsonr6z```)<05>replace<63>striprTrY<00>loads)<01>gpt_json_strings r/<00>get_dict_from_gpt_jsonr<00>sC<00><00>&<26>-<2D>-<2D>i<EFBFBD><12><<3C>D<>D<>U<EFBFBD>B<EFBFBD>O<>U<>U<>W<>O<EFBFBD> <09>/<2F><1A> <0F>:<3A>:<3A>o<EFBFBD> &<26>&r0<00>usagesc<00><><00>|tvrtd|<01>d<02><03><00>d}|D]0}||dt|dzdz |dt|dzdz zz }<02>2|S)z<>
- this function is used to calculate the price of gpt
- usage: list of dicts, [{"completion_tokens": 17, "prompt_tokens": 57, "total_tokens": 74}, ...]
zmodel z, is not supported in the pricing calculator.rr!<00>@<40>@r"r)r<>r&)rr<00>pricer s r/<00>cost_calculatorr<00>s<><00><00>  <0A>N<EFBFBD>"<22><18>6<EFBFBD>%<25><17>(T<>U<>V<>V<> <0A>E<EFBFBD><17>M<02><05> <0A><15><EFBFBD>'<27>.<2E><15>*?<3F><01>*B<>B<>V<EFBFBD>K<>e<EFBFBD>Tg<54>Nh<4E>ky<6B>z<7A>lA<02>BC<02>lD<02>OD<02>GM<02>OM<02>M<02> M<02><05>M<02> <10>Lr0c<00>V<00>d}|D]!}|ddk(r|dz }|d|d<00>d|d<00>d<08>z }<01>#|S) zE
- this function is used to convert messages to conversation
r6rr2zQ############################## conversation begin ##############################
z ########## z ##########
rz
rS)rF<00> conversationrds r/<00>message_to_conversationr <00>sR<00><00><16>L<EFBFBD><1B>c<01><07> <12>6<EFBFBD>?<3F>h<EFBFBD> &<26> <18>p<> p<>L<EFBFBD><14>g<EFBFBD>f<EFBFBD>o<EFBFBD>w<EFBFBD>W`<60>Oa<4F>b<>b<> <0C>c<01> <18>r0c <00><><00><00>eZdZdZdZ<04>fd<03>Zddd<05>Zdededefd <09>Z d
<EFBFBD>Z
defd <0B>Z d e fd <0A>Z dddefdededed e dedef d<11>Z<10>xZS)<14> LLM_ManagerNFc<00>d<00><01>|jstt|<00>|<00>|_|jS<00>N)<04> _instance<63>superr <00>__new__)<04>cls<6C>args<67>kwargs<67> __class__s <20>r/rzLLM_Manager.__new__<5F>s'<00><><00><12>}<7D>}<7D>!<21>+<2B>s<EFBFBD>;<3B>C<EFBFBD>@<40>C<EFBFBD>M<EFBFBD><12>}<7D>}<7D>r0rc<00>@<00>|js<>d|_d|_d|_d|_d|_d|_d|_d|_i|_ d|_
d|_ dtd<03>g|_ tjj!|<01>st#d|<01>d<05><03><00>||_yy)Nrr2rz api key path z is not valid.)<13> _initialized<65>tokens_in_total<61>tokens_out_total<61>tokens_both_total<61>
cost_total<EFBFBD>tokens_in_section<6F>tokens_out_section<6F>tokens_both_section<6F> cost_section<6F>
usage_info<EFBFBD>_llm_model_now<6F> _temperaturer<65>rFr<>r<><00>existsr&<00> _api_key_path)<02>selfr@s r/<00>__init__zLLM_Manager.__init__<5F>s<><00><00><13> <20> <20>#$<24>D<EFBFBD> <20>$%<25>D<EFBFBD> !<21>%&<26>D<EFBFBD> "<22><1F>D<EFBFBD>O<EFBFBD>%&<26>D<EFBFBD> "<22>&'<27>D<EFBFBD> #<23>'(<28>D<EFBFBD> $<24> !<21>D<EFBFBD> <1D> <20>D<EFBFBD>O<EFBFBD>"&<26>D<EFBFBD> <1F> $<24>D<EFBFBD> <1D>&.<2E>;N<>O<>P<>D<EFBFBD>M<EFBFBD><15>7<EFBFBD>7<EFBFBD>><3E>><3E>'<27>*<2A> <20>=<3D><17> <09><1E>!H<>I<>I<>!(<28>D<EFBFBD> <1E>'!r0<00> tokens_in<69>
tokens_outrc<00><><00>|t|dzdz |t|dzdz z}||jj<00>vrddddd<04>|j|<|j|dxx|z cc<|j|dxx|z cc<|j|dxx||zz cc<|j|dxx|z cc<|xj|z c_|xj|z c_|xj
||zz c_|xj |z c_|xj|z c_|xj|z c_|xj||zz c_ |xj|z c_
y) Nrrr)r(r)<00> tokens_both<74>costr(r)r+r,) r<>r!rrrrrrrrrr )r&r(r)rr,s r/r(zLLM_Manager.update_usage<67>s]<00><00><18>><3E>%<25>0<><11>3<>3<>f<EFBFBD><<3C>z<EFBFBD>N<EFBFBD>[`<60>La<4C>bc<62>Ld<4C>?d<>gm<67>?m<>m<><04> <10><04><0F><0F>,<2C>,<2C>.<2E> .<2E>34<33>A<EFBFBD>VW<56>ab<61>%c<>D<EFBFBD>O<EFBFBD>O<EFBFBD>E<EFBFBD> "<22> <0C><0F><0F><05><1E>{<7B>+<2B>y<EFBFBD>8<>+<2B> <0C><0F><0F><05><1E>|<7C>,<2C>
<EFBFBD>:<3A>,<2C> <0C><0F><0F><05><1E>}<7D>-<2D><19>Z<EFBFBD>1G<31>G<>-<2D> <0C><0F><0F><05><1E>v<EFBFBD>&<26>$<24>.<2E>&<26> <0C><1C><1C> <09>)<29><1C> <0C><1D><1D><1A>+<2B><1D> <0C><1E><1E>)<29>j<EFBFBD>"8<>8<><1E> <0C><0F><0F>4<EFBFBD><1F><0F> <0C><1E><1E>)<29>+<2B><1E> <0C><1F><1F>:<3A>-<2D><1F> <0C> <20> <20>I<EFBFBD>
<EFBFBD>$:<3A>:<3A> <20> <0C><19><19>T<EFBFBD>!<21>r0c<00><<00>d|_d|_d|_d|_y)zS
new usage section (only reset the tokens and cost of the section)
rN)rrrr )r&s r/<00> new_sectionzLLM_Manager.new_section<6F>s$<00><00>"#<23><04><1E>"#<23><04><1F>#$<24><04> <20><1D><04>r0c<00><00>||_yr)r")r&rs r/<00> set_modelzLLM_Manager.set_model<65>s
<00><00>#<23><04>r0r,c<00><00>||_yr)r#)r&r,s r/<00>set_temperaturezLLM_Manager.set_temperature<72>s
<00><00>'<27><04>r0r<><00> clear_mem<65>
sys_promptc<00><><00>|<03> |jn|}|<04> |jn|}|r d|d<02>g|_|jjd|d<02><02>t |j||j
|<04><04>\}}|d|_|S)Nr2rr)r)rr*r,rF)r"r#rFrkr r%)r&r<>r3rr,r4rvr}s r/r`zLLM_Manager.chat<61>s<><00><00>',<2C>}<7D><04>#<23>#<23>%<25><05>+6<>+><3E>d<EFBFBD>'<27>'<27>K<EFBFBD> <0B> <14>&.<2E>:<3A>F<>G<>D<EFBFBD>M<EFBFBD> <0C> <0A> <0A><1C><1C>f<EFBFBD><16>@<40>A<>&<26>!<21>]<5D>]<5D><19><1F>-<2D>-<2D>%<25> 
<EFBFBD><1B><06> <0B>$<24>J<EFBFBD>/<2F><04> <0A><15> r0)r<>)rN)<12>__name__<5F>
__module__<EFBFBD> __qualname__rrrr'<00>intr$r(r.r0<00>floatr2r<><00>boolr`<00> __classcell__)rs@r/r r <00>s<><00><><00><14>I<EFBFBD><18>L<EFBFBD><1D>
)<29>,"<22>S<EFBFBD>"<22>S<EFBFBD>"<22><03>"<22>(<1E>$<24>c<EFBFBD>$<24>(<28>%<25>(<28>/4<>t<EFBFBD>W[<5B>l<6C><16>#<23><16><14><16>3<EFBFBD><16>QV<51><16>hk<68><16>CF<02>r0r <00>__main__zwe are testing dalle3)r<>NNF)NNF)r9)r)r)r)4<>__doc__r<5F>rr9rrr<00> loader_saverr<72><00> utils.utilsrr<>r<>r<>r<>rYr\rQr<>rrr <00> config.configr
<00>httpr <00>__all__r<5F><00> JSON_MODELSr<53>r<>r$<00>list<73>dictr r rrr<>r<>r<>r9r<>r<>r<>rrr r r'r6rTrSr0r/<00><module>rGsu<00><01><04> <1A><19><1F><19><1D><0F> <0B> <09><0F> <0B> <0C> <0B> <0A> <09>2<>2<>$<24><1B> H<01><07> <02><0F><14>t<EFBFBD> <0C> <02><10>%<25><15><1E> <02> !<21>5<EFBFBD>%<25>.<2E> <02><1D>u<EFBFBD>e<EFBFBD>n<EFBFBD> <02><1F><15><05><0E> <02><1E><07><17>1<> <02><11>5<EFBFBD>%<25>.<2E> <02><11>5<EFBFBD>%<25>.<2E> <02><18>6<EFBFBD>4<EFBFBD>.<2E> <02><18>5<EFBFBD>%<25>.<2E> <02><1D><07><16>0<> <02>"<1D>t<EFBFBD>T<EFBFBD>l<EFBFBD># <02>$<19>4<EFBFBD><14>,<2C>% <02>&<19>4<EFBFBD><14>,<2C>' <02>( <20>$<24><04><1C>) <02>, <0C>d<EFBFBD>D<EFBFBD>\<5C>- <02>.<10>$<24><04><1C>/ <02>2"<22>6<EFBFBD>*<2A>%<25>v<EFBFBD>.<2E>!<21>6<EFBFBD>*<2A>!<21>6<EFBFBD>*<2A>%<25>v<EFBFBD>.<2E>!<21>6<EFBFBD>*<2A>? <02><0E>D_<01> <0B>
y<02><13>!4<><1E><12>3<EFBFBD><12>PT<02>UX<02>Z^<02>U^<02>P_<02><12>rU<1F>nC<1F>J8Y<01>N<12>. <14>I%<25>\
<16>3<EFBFBD>
<16>s<EFBFBD>
<16>A<02>P<12>>'<27> <11>4<EFBFBD> <11> <18>P<16>P<16>f<1A>m<EFBFBD> <0B> <0C>z<EFBFBD><19> <09>
!<21>"<22>
<EFBFBD>H<EFBFBD>r0