llm-ie 0.1.4__py3-none-any.whl → 0.1.6__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.
llm_ie/data_types.py
CHANGED
|
@@ -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
|
-
|
|
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
|
"""
|
llm_ie/engines.py
CHANGED
llm_ie/extractors.py
CHANGED
|
@@ -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=
|
|
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=[
|
|
316
|
-
|
|
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,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: llm-ie
|
|
3
|
-
Version: 0.1.
|
|
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),
|
|
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.
|
|
@@ -4,10 +4,10 @@ llm_ie/asset/PromptEditor_prompts/rewrite.txt,sha256=bYLOix7DUBlcWv-Q0JZ5kDnZ9OE
|
|
|
4
4
|
llm_ie/asset/prompt_guide/BasicFrameExtractor_prompt_guide.txt,sha256=XbnU8byLGGUA3A3lT0bb2Hw-ggzhcqD3ZuKzduod2ww,1944
|
|
5
5
|
llm_ie/asset/prompt_guide/ReviewFrameExtractor_prompt_guide.txt,sha256=XbnU8byLGGUA3A3lT0bb2Hw-ggzhcqD3ZuKzduod2ww,1944
|
|
6
6
|
llm_ie/asset/prompt_guide/SentenceFrameExtractor_prompt_guide.txt,sha256=8nj9OLPJMtr9Soi5JU3Xk-HC7pKNoI54xA_A4u7I5j4,2620
|
|
7
|
-
llm_ie/data_types.py,sha256=
|
|
8
|
-
llm_ie/engines.py,sha256=
|
|
9
|
-
llm_ie/extractors.py,sha256=
|
|
7
|
+
llm_ie/data_types.py,sha256=MnpyXFviFWhxeC5mqbaPdAxGx6vV_PhnUIFfUamq3D8,6687
|
|
8
|
+
llm_ie/engines.py,sha256=m9ytGUX61jEy9SmVHbb90mrfGMAwC6dV-v7Jke1U7Ho,9296
|
|
9
|
+
llm_ie/extractors.py,sha256=rpHJhlV3A9-9nldIutxd8rtgf7903Ke6QkwbCIVdUdY,22546
|
|
10
10
|
llm_ie/prompt_editor.py,sha256=dbu7A3O7O7Iw2v-xCgrTFH1-wTLAGf4SHDqdeS-He2Q,1869
|
|
11
|
-
llm_ie-0.1.
|
|
12
|
-
llm_ie-0.1.
|
|
13
|
-
llm_ie-0.1.
|
|
11
|
+
llm_ie-0.1.6.dist-info/METADATA,sha256=xD_BHcUAirE7BZJ2wQEaTQUlmzDRo4Yz8Ztr-Gpfivk,29712
|
|
12
|
+
llm_ie-0.1.6.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
13
|
+
llm_ie-0.1.6.dist-info/RECORD,,
|
|
File without changes
|