o
    it                     @   sj   d dl Z d dlZzd dlZW n   edd dlmZ dZdZG dd dZdd	 Z	d
d Z
dd ZdS )    NzHsseclient not found, please install it using 'pip install sseclient-py'.)	get_tokenzhttp://api.waditu.com/dataapiztsgpt-c                   @   sJ   e Zd ZdddZddejfdd	Zdd
dZdddZde	fddZ
dS )	GPTClientNx   c                 C   s   |st  }|| _|| _d S )N)r   tokentimeout)selfr   timetout r	   B/opt/alphahud/venv/lib/python3.10/site-packages/tushare/pro/llm.py__init__   s   
zGPTClient.__init__TFreturnc                 C   sX   t jt d| d||||didd| j i| j|d}|jdkr*td|j |S )	u$  
        model string 模型名称， doubao-pro-128k
        messages list 消息列表
            [
                {
                  "role": "user",
                  "content": "Hello World"
                }
            ]
        pretty bool 是否只返回回答内容文本
        z/llm/params)streammessagestemperature
max_tokensAuthorizationztstoken-)jsonheadersr   r      u   请求出现错误，)requestspostBASE_URLr   r   status_code	Exceptioncontent)r   modelr   r   r   r   prettyrespr	   r	   r
   _request   s   
zGPTClient._requestc                 C   sX   |  ||||d|}| }|ddvrt|dp||r*|d d d d S |S )	NFcode)r   Nmsgchoicesr   messager   )r   r   getr   )r   r   r   r   r   r   r   	resp_datar	   r	   r
   	gpt_query3   s   zGPTClient.gpt_queryc           	      c   sp    |  ||||d|}t| D ]#}d|j v r d S t|j}|r2|d d d d V  q|V  qd S )NTz[DONE]r"   r   deltar   )r   	sseclient	SSEClienteventsdataupperr   loads)	r   r   r   r   r   r   r   ee_datar	   r	   r
   
gpt_stream=   s   zGPTClient.gpt_streamc                 C   s   d|dg}| j ||ddS )Nuserroler   Tr   )r&   )r   r   queryr   r	   r	   r
   gptH   s   zGPTClient.gpt)Nr   )NNTF)NNF)__name__
__module____qualname__r   r   Responser   r&   r0   strr6   r	   r	   r	   r
   r      s    



r   c                  C   sF   t  } | ddddg}t| | jddddgdd}t| d S Ndoubao-pro-128kr1      你好r2   Tr4   )r   r&   printcddr	   r	   r
   test_gpt_queryP   s   
rC   c                  C   sZ   t  } | ddddg}|D ]}t| q| jddddgdd}|D ]}t| q$d S r<   )r   r0   r?   )rA   rB   dr	   r	   r
   test_gpt_stream^   s$   

rE   c                  C   s   t  } | dd}t| d S )Nr=   r>   )r   r6   r?   r@   r	   r	   r
   test_gpts   s   rF   )r   r   r(   ImportErrortusharer   r   API_KEY_PREFIXr   rC   rE   rF   r	   r	   r	   r
   <module>   s    ?