llm-ie 0.1.4__tar.gz → 0.1.6__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: llm-ie
3
- Version: 0.1.4
3
+ Version: 0.1.6
4
4
  Summary: An LLM-powered tool that transforms everyday language into robust information extraction pipelines.
5
5
  License: MIT
6
6
  Author: Enshuo (David) Hsu
@@ -37,7 +37,7 @@ LLM-IE is a toolkit that provides robust information extraction utilities for fr
37
37
  <div align="center"><img src="doc_asset/readme_img/LLM-IE flowchart.png" width=800 ></div>
38
38
 
39
39
  ## Prerequisite
40
- At least one LLM inference engine is required. There are built-in supports for 🦙 [Llama-cpp-python](https://github.com/abetlen/llama-cpp-python), <img src="https://avatars.githubusercontent.com/u/151674099?s=48&v=4" alt="Icon" width="20"/> [Ollama](https://github.com/ollama/ollama), 🤗 [Huggingface_hub](https://github.com/huggingface/huggingface_hub), and <img src=doc_asset/readme_img/openai-logomark.png width=16 /> [OpenAI API](https://platform.openai.com/docs/api-reference/introduction). For installation guides, please refer to those projects. Other inference engines can be configured through the [InferenceEngine](src/llm_ie/engines.py) abstract class. See [LLM Inference Engine](#llm-inference-engine) section below.
40
+ At least one LLM inference engine is required. There are built-in supports for 🦙 [Llama-cpp-python](https://github.com/abetlen/llama-cpp-python), <img src="https://avatars.githubusercontent.com/u/151674099?s=48&v=4" alt="Icon" width="20"/> [Ollama](https://github.com/ollama/ollama), 🤗 [Huggingface_hub](https://github.com/huggingface/huggingface_hub), <img src=doc_asset/readme_img/openai-logomark.png width=16 /> [OpenAI API](https://platform.openai.com/docs/api-reference/introduction), and <img src=doc_asset/readme_img/vllm-logo.png width=20 /> vLLM. For installation guides, please refer to those projects. Other inference engines can be configured through the [InferenceEngine](src/llm_ie/engines.py) abstract class. See [LLM Inference Engine](#llm-inference-engine) section below.
41
41
 
42
42
  ## Installation
43
43
  The Python package is available on PyPI.
@@ -92,6 +92,26 @@ from llm_ie.engines import OpenAIInferenceEngine
92
92
  llm = OpenAIInferenceEngine(model="gpt-4o-mini")
93
93
  ```
94
94
 
95
+ </details>
96
+
97
+ <details>
98
+ <summary><img src=doc_asset/readme_img/vllm-logo.png width=20 /> vLLM</summary>
99
+
100
+ The vLLM support follows the [OpenAI Compatible Server](https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html). For more parameters, please refer to the documentation.
101
+
102
+ Start the server
103
+ ```cmd
104
+ vllm serve meta-llama/Meta-Llama-3.1-8B-Instruct
105
+ ```
106
+ Define inference engine
107
+ ```python
108
+ from llm_ie.engines import OpenAIInferenceEngine
109
+ engine = OpenAIInferenceEngine(base_url="http://localhost:8000/v1",
110
+ api_key="EMPTY",
111
+ model="meta-llama/Meta-Llama-3.1-8B-Instruct")
112
+ ```
113
+
114
+
95
115
  </details>
96
116
 
97
117
  In this quick start demo, we use Llama-cpp-python to run Llama-3.1-8B with int8 quantization ([bullerwins/Meta-Llama-3.1-8B-Instruct-GGUF](https://huggingface.co/bullerwins/Meta-Llama-3.1-8B-Instruct-GGUF)).
@@ -244,6 +264,24 @@ from llm_ie.engines import OpenAIInferenceEngine
244
264
  openai_engine = OpenAIInferenceEngine(model="gpt-4o-mini")
245
265
  ```
246
266
 
267
+ #### <img src=doc_asset/readme_img/vllm-logo.png width=20 /> vLLM
268
+ The vLLM support follows the [OpenAI Compatible Server](https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html). For more parameters, please refer to the documentation.
269
+
270
+ Start the server
271
+ ```cmd
272
+ CUDA_VISIBLE_DEVICES=<GPU#> vllm serve meta-llama/Meta-Llama-3.1-8B-Instruct --api-key MY_API_KEY --tensor-parallel-size <# of GPUs to use>
273
+ ```
274
+ Use ```CUDA_VISIBLE_DEVICES``` to specify GPUs to use. The ```--tensor-parallel-size``` should be set accordingly. The ```--api-key``` is optional.
275
+ the default port is 8000. ```--port``` sets the port.
276
+
277
+ Define inference engine
278
+ ```python
279
+ from llm_ie.engines import OpenAIInferenceEngine
280
+ engine = OpenAIInferenceEngine(base_url="http://localhost:8000/v1",
281
+ api_key="MY_API_KEY",
282
+ model="meta-llama/Meta-Llama-3.1-8B-Instruct")
283
+ ```
284
+ The ```model``` must match the repo name specified in the server.
247
285
 
248
286
  #### Test inference engine configuration
249
287
  To test the inference engine, use the ```chat()``` method.
@@ -23,7 +23,7 @@ LLM-IE is a toolkit that provides robust information extraction utilities for fr
23
23
  <div align="center"><img src="doc_asset/readme_img/LLM-IE flowchart.png" width=800 ></div>
24
24
 
25
25
  ## Prerequisite
26
- At least one LLM inference engine is required. There are built-in supports for 🦙 [Llama-cpp-python](https://github.com/abetlen/llama-cpp-python), <img src="https://avatars.githubusercontent.com/u/151674099?s=48&v=4" alt="Icon" width="20"/> [Ollama](https://github.com/ollama/ollama), 🤗 [Huggingface_hub](https://github.com/huggingface/huggingface_hub), and <img src=doc_asset/readme_img/openai-logomark.png width=16 /> [OpenAI API](https://platform.openai.com/docs/api-reference/introduction). For installation guides, please refer to those projects. Other inference engines can be configured through the [InferenceEngine](src/llm_ie/engines.py) abstract class. See [LLM Inference Engine](#llm-inference-engine) section below.
26
+ At least one LLM inference engine is required. There are built-in supports for 🦙 [Llama-cpp-python](https://github.com/abetlen/llama-cpp-python), <img src="https://avatars.githubusercontent.com/u/151674099?s=48&v=4" alt="Icon" width="20"/> [Ollama](https://github.com/ollama/ollama), 🤗 [Huggingface_hub](https://github.com/huggingface/huggingface_hub), <img src=doc_asset/readme_img/openai-logomark.png width=16 /> [OpenAI API](https://platform.openai.com/docs/api-reference/introduction), and <img src=doc_asset/readme_img/vllm-logo.png width=20 /> vLLM. For installation guides, please refer to those projects. Other inference engines can be configured through the [InferenceEngine](src/llm_ie/engines.py) abstract class. See [LLM Inference Engine](#llm-inference-engine) section below.
27
27
 
28
28
  ## Installation
29
29
  The Python package is available on PyPI.
@@ -78,6 +78,26 @@ from llm_ie.engines import OpenAIInferenceEngine
78
78
  llm = OpenAIInferenceEngine(model="gpt-4o-mini")
79
79
  ```
80
80
 
81
+ </details>
82
+
83
+ <details>
84
+ <summary><img src=doc_asset/readme_img/vllm-logo.png width=20 /> vLLM</summary>
85
+
86
+ The vLLM support follows the [OpenAI Compatible Server](https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html). For more parameters, please refer to the documentation.
87
+
88
+ Start the server
89
+ ```cmd
90
+ vllm serve meta-llama/Meta-Llama-3.1-8B-Instruct
91
+ ```
92
+ Define inference engine
93
+ ```python
94
+ from llm_ie.engines import OpenAIInferenceEngine
95
+ engine = OpenAIInferenceEngine(base_url="http://localhost:8000/v1",
96
+ api_key="EMPTY",
97
+ model="meta-llama/Meta-Llama-3.1-8B-Instruct")
98
+ ```
99
+
100
+
81
101
  </details>
82
102
 
83
103
  In this quick start demo, we use Llama-cpp-python to run Llama-3.1-8B with int8 quantization ([bullerwins/Meta-Llama-3.1-8B-Instruct-GGUF](https://huggingface.co/bullerwins/Meta-Llama-3.1-8B-Instruct-GGUF)).
@@ -230,6 +250,24 @@ from llm_ie.engines import OpenAIInferenceEngine
230
250
  openai_engine = OpenAIInferenceEngine(model="gpt-4o-mini")
231
251
  ```
232
252
 
253
+ #### <img src=doc_asset/readme_img/vllm-logo.png width=20 /> vLLM
254
+ The vLLM support follows the [OpenAI Compatible Server](https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html). For more parameters, please refer to the documentation.
255
+
256
+ Start the server
257
+ ```cmd
258
+ CUDA_VISIBLE_DEVICES=<GPU#> vllm serve meta-llama/Meta-Llama-3.1-8B-Instruct --api-key MY_API_KEY --tensor-parallel-size <# of GPUs to use>
259
+ ```
260
+ Use ```CUDA_VISIBLE_DEVICES``` to specify GPUs to use. The ```--tensor-parallel-size``` should be set accordingly. The ```--api-key``` is optional.
261
+ the default port is 8000. ```--port``` sets the port.
262
+
263
+ Define inference engine
264
+ ```python
265
+ from llm_ie.engines import OpenAIInferenceEngine
266
+ engine = OpenAIInferenceEngine(base_url="http://localhost:8000/v1",
267
+ api_key="MY_API_KEY",
268
+ model="meta-llama/Meta-Llama-3.1-8B-Instruct")
269
+ ```
270
+ The ```model``` must match the repo name specified in the server.
233
271
 
234
272
  #### Test inference engine configuration
235
273
  To test the inference engine, use the ```chat()``` method.
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "llm-ie"
3
- version = "0.1.4"
3
+ version = "0.1.6"
4
4
  description = "An LLM-powered tool that transforms everyday language into robust information extraction pipelines."
5
5
  authors = ["Enshuo (David) Hsu"]
6
6
  license = "MIT"
@@ -3,7 +3,7 @@ import yaml
3
3
 
4
4
 
5
5
  class LLMInformationExtractionFrame:
6
- def __init__(self, frame_id:str, start:int, end:int, entity_text:str, attr:Dict[str,str]):
6
+ def __init__(self, frame_id:str, start:int, end:int, entity_text:str, attr:Dict[str,str]=None):
7
7
  """
8
8
  This class holds a frame (entity) extracted by LLM.
9
9
  A frame contains the span (start and end character positions), a entity text, and
@@ -19,7 +19,7 @@ class LLMInformationExtractionFrame:
19
19
  entity end character position
20
20
  entity_text : str
21
21
  entity string. Should be the exact string by [start:end]
22
- attr : Dict[str,str]
22
+ attr : Dict[str,str], Optional
23
23
  dict of attributes
24
24
  """
25
25
  assert isinstance(frame_id, str), "frame_id must be a string."
@@ -27,7 +27,10 @@ class LLMInformationExtractionFrame:
27
27
  self.start = start
28
28
  self.end = end
29
29
  self.entity_text = entity_text
30
- self.attr = attr.copy()
30
+ if attr:
31
+ self.attr = attr.copy()
32
+ else:
33
+ self.attr = None
31
34
 
32
35
  def is_equal(self, frame:"LLMInformationExtractionFrame") -> bool:
33
36
  """
@@ -246,4 +246,4 @@ class OpenAIInferenceEngine(InferenceEngine):
246
246
  print(chunk.choices[0].delta.content, end="")
247
247
  return res
248
248
 
249
- return response.choices[0].delta.content
249
+ return response.choices[0].message.content
@@ -197,9 +197,13 @@ class BasicFrameExtractor(FrameExtractor):
197
197
  Return : str
198
198
  the output from LLM. Need post-processing.
199
199
  """
200
+ messages = []
201
+ if self.system_prompt:
202
+ messages.append({'role': 'system', 'content': self.system_prompt})
203
+
204
+ messages.append({'role': 'user', 'content': self._get_user_prompt(text_content)})
200
205
  response = self.inference_engine.chat(
201
- messages=[{'role': 'system', 'content': self.system_prompt},
202
- {'role': 'user', 'content': self._get_user_prompt(text_content)}],
206
+ messages=messages,
203
207
  max_new_tokens=max_new_tokens,
204
208
  temperature=temperature,
205
209
  stream=stream,
@@ -312,9 +316,11 @@ class ReviewFrameExtractor(BasicFrameExtractor):
312
316
  the output from LLM. Need post-processing.
313
317
  """
314
318
  # Pormpt extraction
315
- messages=[{'role': 'system', 'content': self.system_prompt},
316
- {'role': 'user', 'content': self._get_user_prompt(text_content)}]
317
-
319
+ messages = []
320
+ if self.system_prompt:
321
+ messages.append({'role': 'system', 'content': self.system_prompt})
322
+
323
+ messages.append({'role': 'user', 'content': self._get_user_prompt(text_content)})
318
324
  initial = self.inference_engine.chat(
319
325
  messages=messages,
320
326
  max_new_tokens=max_new_tokens,
File without changes