File size: 2,538 Bytes
bff5ca2
637f413
4fcf29e
bff5ca2
 
637f413
bff5ca2
 
637f413
bff5ca2
4fcf29e
bff5ca2
 
 
4fcf29e
bff5ca2
4fcf29e
 
 
 
bff5ca2
 
4fcf29e
 
bff5ca2
637f413
 
bff5ca2
4fcf29e
 
bff5ca2
4fcf29e
 
 
bff5ca2
4fcf29e
 
bff5ca2
4fcf29e
 
 
 
 
 
 
 
bff5ca2
4fcf29e
bff5ca2
4fcf29e
bff5ca2
4fcf29e
 
 
 
 
 
 
 
 
 
bff5ca2
 
 
4fcf29e
 
bff5ca2
4fcf29e
637f413
4fcf29e
bff5ca2
4fcf29e
bff5ca2
4fcf29e
bff5ca2
4fcf29e
bff5ca2
 
4fcf29e
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
---
license: apache-2.0
inference: false
---

# SLIM-EXTRACT-PHI-3


**slim-extract-phi-3** implements a specialized function-calling customizable 'extract' capability that takes as an input a context passage, a customized key, and outputs a python dictionary with key that corresponds to the customized key, with a value consisting of a list of items extracted from the text corresponding to that key, e.g., 

    `{'universities': ['Berkeley, Stanford, Yale, University of Florida, ...'] }`



## Prompt format:

`function = "extract"`  
`params = "{custom key}"`  
`prompt = "<human> " + {text} + "\n" + `  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;`"<{function}> " + {params} + "</{function}>" + "\n<bot>:"`  


<details>
<summary>Transformers Script </summary>

    model = AutoModelForCausalLM.from_pretrained("llmware/slim-extract-phi-3")
    tokenizer = AutoTokenizer.from_pretrained("llmware/slim-extract-phi-3")

    function = "extract"
    params = "company"

    text = "Tesla stock declined yesterday 8% in premarket trading after a poorly-received event in San Francisco yesterday, in which the company indicated a likely shortfall in revenue."  
    
    prompt = "<human>: " + text + "\n" + f"<{function}> {params} </{function}>\n<bot>:"

    inputs = tokenizer(prompt, return_tensors="pt")
    start_of_input = len(inputs.input_ids[0])

    outputs = model.generate(
        inputs.input_ids.to('cpu'),
        eos_token_id=tokenizer.eos_token_id,
        pad_token_id=tokenizer.eos_token_id,
        do_sample=True,
        temperature=0.3,
        max_new_tokens=100
    )

    output_only = tokenizer.decode(outputs[0][start_of_input:], skip_special_tokens=True)

    print("output only: ", output_only)  

    # here's the fun part
    try:
        output_only = ast.literal_eval(llm_string_output)
        print("success - converted to python dictionary automatically")
    except:
        print("fail - could not convert to python dictionary automatically - ", llm_string_output)
   
   </details>  
 
<details>  



    
<summary>Using as Function Call in LLMWare</summary>

    from llmware.models import ModelCatalog
    slim_model = ModelCatalog().load_model("llmware/slim-extract-phi-3")
    response = slim_model.function_call(text,params=["company"], function="extract")

    print("llmware - llm_response: ", response)

</details>  

    
## Model Card Contact

Darren Oberst & llmware team  

[Join us on Discord](https://discord.gg/MhZn5Nc39h)