Format: application/x-python-code
⬇ Download File (4.0 KB)
   1  o
   2  
   3  `�hk�
   4  @s�ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	ddl
   5  mZddlm
   6  Z
   7  ejejd�e�e�Zedd�d	d
   8  ��Zdefdd
   9  �Zddd�Z	ddedededededefdd�ZdS)�N)�	lru_cache)�AsyncClient)�available_functions)�SYSTEM_PROMPTS)�level�)�maxsizecCst�S)N)�list_models�r
  10  r
  11  �>C:\Users\shubh\Videos\agent\agent\modules\llm\ollama_client.py�list_models_cachedsr�returnc
  12  Cstzddl}|�d�}|��dd�|���dg�D�WSty9}zt�dt|����gWYd}~Sd}~ww)Nrzhttp://localhost:11434/api/tagscSsg|]}|d�qS)�namer
  13  )�.0�modelr
  14  r
  15  r�
  16  <listcomp>szlist_models.<locals>.<listcomp>�modelszModel listing failed: )�requests�get�raise_for_status�json�	Exception�logger�error�str)r�response�er
  17  r
  18  rr	s
  19  ��r	c
  20  Cs�dd�}dd�}zddl}|�d�}|jdkrt�d�WdSWnty;t�d	�|d
  21  �r9t�d�|d
  22  �Ynwztjdd
  23  gtjtjd�t�d�WdStyk}zt�	d|���WYd}~dSd}~ww)NcSsFt�tjtj��}|�d|f�dkWd�S1swYdS)N�	localhostr)�socket�AF_INET�SOCK_STREAM�
  24  connect_ex)�port�sr
  25  r
  26  r�is_port_in_uses$�z-ensure_ollama_running.<locals>.is_port_in_usecSs�t�ddg�D]8}|jdd�D]/}|jj|kr>z	|��WdSty=}zt�d|�d|���WYd}~qd}~wwqqdS)N�pidrZinet)�kindzFailed to kill process on port z: )	�psutilZprocess_iterZnet_connections�laddrr"�killrrr)r"�proc�connrr
  27  r
  28  r�	free_port"s
  29  "�����z(ensure_ollama_running.<locals>.free_portrzhttp://localhost:11434��zOllama is already running.z-Ollama not running. Attempting to start it...i�,z#Port 11434 is in use, freeing it...�ollamaZserve)�stdout�stderrzOllama server started.zFailed to start Ollama: )
  30  rr�status_coder�infor�
  31  subprocess�Popen�DEVNULLr)r$r,rrrr
  32  r
  33  r�ensure_ollama_runnings.
  34  
  35  
  36  
  37  �
  38  
  39  ����r6�core_llm�promptr�tools�context�
  40  agent_typec
  41  �sf�t�|��td�}d|d�g|�dt|�d��}zzt�}|j|||ddid�IdH}|j}	|	j}
  42  t�	d|	j
  43  �|	j
  44  r�|	j
  45  d	}|jj}|jj
  46  }
  47  t|
  48  t�rP|
  49  nt�|
  50  �}d
  51  d�|��D�}|tvr�tjt|fi|��IdH}dd|�d
  52  |dd��d�}|j||gddid�IdH}|jjWS|
  53  WSty�}zt�d�dt|���WYd}~Sd}~ww)NZCORE_LLM�system)�role�contentr:Ztemperatureg�������?)r�messagesr9�optionsz
  54  Assistant: %srcSs8i|]\}}||dkrt|t�r|��rt|�n|�qS)�max_results)�
  55  isinstancer�isdigit�int)r�k�vr
  56  r
  57  r�
  58  <dictcomp>^s8z query_ollama.<locals>.<dictcomp>zBased on this result:
  59   z/, try to answer the original question by user: �����r>g)rr?r@zError in query_ollama:zOllama Tool Call Error: )rr�upperrr�chat�messager>rr2Z
  60  tool_calls�functionr�	argumentsrB�dictr�loads�itemsr�asyncio�	to_threadr�	exception)r8rr9r:r;Z
  61  system_promptZformatted_messages�clientr�msg�assistant_textZ	tool_call�fn_nameZraw_args�args�resultZmini_sysZfollowuprr
  62  r
  63  r�query_ollama>sP�����
  64  �
  65  �
  66  
  67  ��rZ)r
  68  N)r7)�loggingrr3r'rrQ�	functoolsrr.r�
  69  modules.toolsr�%modules.system_prompts.system_promptsr�basicConfig�INFO�	getLogger�__name__rr�listr	r6rrNrZr
  70  r
  71  r
  72  r�<module>s<
  73  
  74  
  75  
  76  &�������