hjxdl 0.3.21__py3-none-any.whl → 0.3.23__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hdl/_version.py +2 -2
- hdl/utils/llm/llm_wrapper.py +37 -6
- {hjxdl-0.3.21.dist-info → hjxdl-0.3.23.dist-info}/METADATA +1 -1
- {hjxdl-0.3.21.dist-info → hjxdl-0.3.23.dist-info}/RECORD +7 -7
- {hjxdl-0.3.21.dist-info → hjxdl-0.3.23.dist-info}/LICENSE +0 -0
- {hjxdl-0.3.21.dist-info → hjxdl-0.3.23.dist-info}/WHEEL +0 -0
- {hjxdl-0.3.21.dist-info → hjxdl-0.3.23.dist-info}/top_level.txt +0 -0
    
        hdl/_version.py
    CHANGED
    
    
    
        hdl/utils/llm/llm_wrapper.py
    CHANGED
    
    | @@ -2,7 +2,6 @@ import yaml | |
| 2 2 | 
             
            import typing as t
         | 
| 3 3 |  | 
| 4 4 | 
             
            from openai import OpenAI
         | 
| 5 | 
            -
            import instructor
         | 
| 6 5 |  | 
| 7 6 |  | 
| 8 7 | 
             
            class OpenAIWrapper(object):
         | 
| @@ -33,6 +32,12 @@ class OpenAIWrapper(object): | |
| 33 32 | 
             
                    Note:
         | 
| 34 33 | 
             
                        The method will create a client for each configuration found in `client_conf`,
         | 
| 35 34 | 
             
                        initializing the client with the specified `base_url` and `api_key`.
         | 
| 35 | 
            +
                    Examples:
         | 
| 36 | 
            +
                        >>> llm = OpenAIWrapper(
         | 
| 37 | 
            +
                        >>>     client_conf_dir="/some/path/model_conf.yaml",
         | 
| 38 | 
            +
                        >>>     # load_conf=False
         | 
| 39 | 
            +
                        >>> )
         | 
| 40 | 
            +
            )
         | 
| 36 41 | 
             
                    """
         | 
| 37 42 | 
             
                    self.client_conf = {}
         | 
| 38 43 | 
             
                    if client_conf is None:
         | 
| @@ -78,6 +83,13 @@ class OpenAIWrapper(object): | |
| 78 83 |  | 
| 79 84 | 
             
                    Raises:
         | 
| 80 85 | 
             
                        ValueError: If both host and port are not valid for constructing a URL.
         | 
| 86 | 
            +
                    Examples:
         | 
| 87 | 
            +
                        >>> llm.add_client(
         | 
| 88 | 
            +
                        >>>     client_id="rone",
         | 
| 89 | 
            +
                        >>>     host="127.0.0.1",
         | 
| 90 | 
            +
                        >>>     port=22299,
         | 
| 91 | 
            +
                        >>>     model="ictrek/rone:1.5b32k",
         | 
| 92 | 
            +
                        >>> )
         | 
| 81 93 | 
             
                    """
         | 
| 82 94 | 
             
                    self.client_conf[client_id] = {}
         | 
| 83 95 | 
             
                    if not host.startswith('http') and port:
         | 
| @@ -158,6 +170,7 @@ class OpenAIWrapper(object): | |
| 158 170 |  | 
| 159 171 | 
             
                    client = self.client_conf[client_id]['client']
         | 
| 160 172 | 
             
                    if response_model:
         | 
| 173 | 
            +
                        import instructor #TODO 有些模型支持这个 instructor 的结构化输出,但实际上它调用的还是openai api的功能,以后适时删除或补全
         | 
| 161 174 | 
             
                        client = instructor.from_openai(client)
         | 
| 162 175 |  | 
| 163 176 | 
             
                    messages = []
         | 
| @@ -190,7 +203,10 @@ class OpenAIWrapper(object): | |
| 190 203 | 
             
                    elif len(image_keys) == 1:
         | 
| 191 204 | 
             
                        image_keys = (image_keys[0],) * 3
         | 
| 192 205 |  | 
| 193 | 
            -
                    content = [ | 
| 206 | 
            +
                    content = [{
         | 
| 207 | 
            +
                        "type": "text",
         | 
| 208 | 
            +
                        "text": prompt
         | 
| 209 | 
            +
                    }]
         | 
| 194 210 | 
             
                    if images:
         | 
| 195 211 | 
             
                        if isinstance(images, str):
         | 
| 196 212 | 
             
                            images = [images]
         | 
| @@ -244,6 +260,15 @@ class OpenAIWrapper(object): | |
| 244 260 | 
             
                              - 'type' (str): Indicates the type of response ('text' or 'tool_calls').
         | 
| 245 261 | 
             
                              - 'contents' (str, optional): The text content if the response type is 'text'.
         | 
| 246 262 | 
             
                              - 'tool_params' (dict, optional): The parameters of the tool called if the response type is 'tool_calls'.
         | 
| 263 | 
            +
             | 
| 264 | 
            +
                    Examples:
         | 
| 265 | 
            +
                        >>> llm.invoke(
         | 
| 266 | 
            +
                        >>>     client_id="glm_4_flash",
         | 
| 267 | 
            +
                        >>>     prompt="深圳天气怎么样?",
         | 
| 268 | 
            +
                        >>>     tools=[TOOL_DICT['get_weather']],
         | 
| 269 | 
            +
                        >>> )
         | 
| 270 | 
            +
                        {'type': 'tool_calls',
         | 
| 271 | 
            +
                         'tool_parmas': Function(arguments='{"location": "Shenzhen"}', name='get_weather')}
         | 
| 247 272 | 
             
                    """
         | 
| 248 273 | 
             
                    answer_dict = {}
         | 
| 249 274 |  | 
| @@ -279,6 +304,16 @@ class OpenAIWrapper(object): | |
| 279 304 | 
             
                            - tool_params (dict, optional): Parameters of the tool call if the type is 'tool_calls'.
         | 
| 280 305 | 
             
                            - content (str, optional): The generated text content if the type is 'text'.
         | 
| 281 306 | 
             
                            - message (str, optional): An error message if the type is 'error'.
         | 
| 307 | 
            +
             | 
| 308 | 
            +
                    Examplse:
         | 
| 309 | 
            +
                        >>> resp = llm.stream(
         | 
| 310 | 
            +
                        >>>     client_id="r1", #此模型可以进行cot
         | 
| 311 | 
            +
                        >>>     prompt=prompt,
         | 
| 312 | 
            +
                        >>>     # tools=[TOOL_DICT['get_weather']],
         | 
| 313 | 
            +
                        >>> )
         | 
| 314 | 
            +
                        >>> for i in resp:
         | 
| 315 | 
            +
                        >>>     if i['type'] == 'text' and i['content']:
         | 
| 316 | 
            +
                        >>>         print(i['content'], flush=True, end="")
         | 
| 282 317 | 
             
                    """
         | 
| 283 318 | 
             
                    resp = self.get_resp(prompt=prompt, stream=True, **kwargs)
         | 
| 284 319 |  | 
| @@ -312,7 +347,3 @@ class OpenAIWrapper(object): | |
| 312 347 | 
             
                            return
         | 
| 313 348 |  | 
| 314 349 | 
             
                    return
         | 
| 315 | 
            -
             | 
| 316 | 
            -
             | 
| 317 | 
            -
             | 
| 318 | 
            -
             | 
| @@ -1,5 +1,5 @@ | |
| 1 1 | 
             
            hdl/__init__.py,sha256=GffnD0jLJdhkd-vo989v40N90sQbofkayRBwxc6TVhQ,72
         | 
| 2 | 
            -
            hdl/_version.py,sha256= | 
| 2 | 
            +
            hdl/_version.py,sha256=Li8JkxhYfS5RJsRP9TE94VsfPVxFjJHFIPlVKBeP0UY,413
         | 
| 3 3 | 
             
            hdl/args/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 4 4 | 
             
            hdl/args/loss_args.py,sha256=s7YzSdd7IjD24rZvvOrxLLFqMZQb9YylxKeyelSdrTk,70
         | 
| 5 5 | 
             
            hdl/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| @@ -134,15 +134,15 @@ hdl/utils/llm/chatgr.py,sha256=5F5PJHe8vz3iCfi4TT54DCLRi1UeJshECdVtgvvvao0,3696 | |
| 134 134 | 
             
            hdl/utils/llm/embs.py,sha256=Tf0FOYrOFZp7qQpEPiSCXzlgyHH0X9HVTUtsup74a9E,7174
         | 
| 135 135 | 
             
            hdl/utils/llm/extract.py,sha256=2sK_WJzmYIc8iuWaM9DA6Nw3_6q1O4lJ5pKpcZo-bBA,6512
         | 
| 136 136 | 
             
            hdl/utils/llm/llama_chat.py,sha256=watcHGOaz-bv3x-yDucYlGk5f8FiqfFhwWogrl334fk,4387
         | 
| 137 | 
            -
            hdl/utils/llm/llm_wrapper.py,sha256= | 
| 137 | 
            +
            hdl/utils/llm/llm_wrapper.py,sha256=gHG-VNTUmLcTs5xtAtmnjOiSJRoBbvsiduPQyUWH8pA,13729
         | 
| 138 138 | 
             
            hdl/utils/llm/vis.py,sha256=SSP6tOwKLq0hWcpM3twI9TitqzBmKjlcGrnXEWYlCzM,26055
         | 
| 139 139 | 
             
            hdl/utils/llm/visrag.py,sha256=0i-VrxqgiV-J7R3VPshu9oc7-rKjFJOldYik3HDXj6M,10176
         | 
| 140 140 | 
             
            hdl/utils/schedulers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 141 141 | 
             
            hdl/utils/schedulers/norm_lr.py,sha256=bDwCmdEK-WkgxQMFBiMuchv8Mm7C0-GZJ6usm-PQk14,4461
         | 
| 142 142 | 
             
            hdl/utils/weather/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 143 143 | 
             
            hdl/utils/weather/weather.py,sha256=k11o6wM15kF8b9NMlEfrg68ak-SfSYLN3nOOflFUv-I,4381
         | 
| 144 | 
            -
            hjxdl-0.3. | 
| 145 | 
            -
            hjxdl-0.3. | 
| 146 | 
            -
            hjxdl-0.3. | 
| 147 | 
            -
            hjxdl-0.3. | 
| 148 | 
            -
            hjxdl-0.3. | 
| 144 | 
            +
            hjxdl-0.3.23.dist-info/LICENSE,sha256=lkMiSbeZHBQLB9LJEkS9-L3Z-LBC4yGnKrzHSG8RkPM,2599
         | 
| 145 | 
            +
            hjxdl-0.3.23.dist-info/METADATA,sha256=llZdZm3Z6-1VOhNdOgVHGwtW1mDAy2kfCYm85r5O-Eg,1336
         | 
| 146 | 
            +
            hjxdl-0.3.23.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
         | 
| 147 | 
            +
            hjxdl-0.3.23.dist-info/top_level.txt,sha256=-kxwTM5JPhylp06z3zAVO3w6_h7wtBfBo2zgM6YZoTk,4
         | 
| 148 | 
            +
            hjxdl-0.3.23.dist-info/RECORD,,
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         |