
    뉰j=                     n    d Z ddlmZmZ ddlZddlZddlZddlZ G d de      Zd Z	e
dk(  r e	        yy)u  假的 WeMM-Embedding 占位服务

用于测试和开发阶段，提供与真实 WeMM-Embedding 兼容的接口。
真实服务部署到 GPU 机器后，替换此实现即可。

API 端点:
- POST /embed - 生成文本向量
- POST /health - 健康检查
    )
HTTPServerBaseHTTPRequestHandlerNc                       e Zd ZdZd Zd Zy)FakeWeMMHandleru#   假的 WeMM-Embedding API 处理器c           	         | j                   dk(  rt        | j                  d         }| j                  j	                  |      }	 t        j                  |      }|j                  dd      }t        j                  |j                  d            }g }t        d      D ]R  }|dz  t        |j                               z  }|j                  t        |j                         |         dz  d	z
         T t!        d
 |D              d	z  }	|	dkD  r|D 
cg c]  }
|
|	z  	 }}
d|ddd}| j#                  d       | j%                  dd       | j'                          | j(                  j+                  t        j,                  |      j                  d             y | j                   dk(  ru| j#                  d       | j%                  dd       | j'                          | j(                  j+                  t        j,                  dddd      j                  d             y | j#                  d       | j'                          y c c}
w # t.        $ r}| j#                  d       | j%                  dd       | j'                          | j(                  j+                  t        j,                  dt1        |      i      j                  d             Y d }~y d }~ww xY w)Nz/embedzContent-Lengthtext zutf-8i      g     o@g      ?c              3   &   K   | ]	  }||z    y w)N ).0vs     fake_wemm_server.py	<genexpr>z*FakeWeMMHandler.do_POST.<locals>.<genexpr>(   s     4V!Vs   r   Tzwemm-embedding-v1-fake)successvector	dimensionmodel   zContent-Typezapplication/jsoni  errorz/healthokzfake-wemm-embedding)statusr   
dimensionsi  )pathintheadersrfilereadjsonloadsgethashlibsha256encoderangelendigestappendordsumsend_responsesend_headerend_headerswfilewritedumps	Exceptionstr)selfcontent_length	post_datadatar   hash_objr   i
byte_index	magnituder   responsees                r   do_POSTzFakeWeMMHandler.do_POST   sf   99  .>!?@N

7I"Pzz),xx+ #>>$++g*>?sA"#a%3x/@+A!AJMM3x'8'D#E#MQT"TU $  4V44;	q=39:6aa	k6F:  $$!$5	 ""3'  1CD  "

  H!5!<!<W!EF YY)#s#^-?@JJTZZ.!)  vg	  s#A ;  P""3'  1CD  "

  Wc!f,=!>!E!Eg!NOO	Ps-   CI H<A9I <I 	K
A;K

Kc                      y)u   静默日志Nr   )r3   formatargss      r   log_messagezFakeWeMMHandler.log_messageL   s        N)__name__
__module____qualname____doc__r=   rA   r   rB   r   r   r      s    -5nrB   r   c                     d} t        d| ft              }t        d|         t        d       t        d       t        d       t                d }t        j                  t        j                  |       t        j                  t        j
                  |       	 |j                          y # t        $ r  |d d        Y y w xY w)Ni="  	localhostu<   🤖 假的 WeMM-Embedding 服务启动于 http://localhost:u1      - POST /embed - 生成文本向量（768维）u       - POST /health - 健康检查uC      提示: 这是占位服务，真实服务需部署到 GPU 机器c                 D    t        d       t        j                  d       y )Nu$   
🛑 WeMM-Embedding 服务已停止r   )printsysexit)signumframes     r   handle_exitzmain.<locals>.handle_exit[   s    56rB   )r   r   rJ   signalSIGINTSIGTERMserve_foreverKeyboardInterrupt)portserverrO   s      r   mainrW   Q   s    Dd+_=F	H
OP	=?	,.	OQ	G MM&---
MM&..+.   D$ s   B+ +C ?C __main__)rF   http.serverr   r   r   r"   rK   rP   r   rW   rC   r   rB   r   <module>rZ      sB    ;   
 <, <~ . zF rB   