File size: 3,431 Bytes
ea9bd81 f4d28cb ea9bd81 0277199 892a247 0277199 e6241ff 0277199 9957bbd 0277199 e6241ff 0277199 892a247 0277199 e6241ff 0277199 f4d28cb 0277199 f4d28cb e6241ff f4d28cb 0277199 f4d28cb 0277199 e6241ff 0277199 f4d28cb e6241ff 0277199 e6241ff f4d28cb 0277199 f4d28cb 0277199 f4d28cb 0277199 f4d28cb 0277199 f4d28cb 0277199 f4d28cb 0277199 f4d28cb 0277199 f4d28cb 0277199 f4d28cb 0277199 f4d28cb 0277199 9957bbd 892a247 9957bbd 0277199 f4d28cb 0277199 f4d28cb 0277199 f4d28cb 0277199 |
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
---
license: apache-2.0
inference: false
---
# SLIM-NLI
<!-- Provide a quick summary of what the model is/does. -->
**slim-nli** is part of the SLIM ("**S**tructured **L**anguage **I**nstruction **M**odel") model series, consisting of small, specialized decoder-based models, fine-tuned for function-calling.
slim-nli has been fine-tuned for **natural language inference (nli)** function calls, generating output consisting of a python dictionary corresponding to specified keys, e.g.:
`{"evidence": ["contradicts"]}`
SLIM models are designed to generate structured outputs that can be used programmatically as part of a multi-step, multi-model LLM-based automation workflow.
Each slim model has a 'quantized tool' version, e.g., [**'slim-nli-tool'**](https://huggingface.co/llmware/slim-nli-tool).
## Prompt format:
`function = "classify"`
`params = "nli"`
`prompt = "<human> " + {text} + "\n" + `
`"<{function}> " + {params} + "</{function}>" + "\n<bot>:"`
<details>
<summary>Transformers Script </summary>
model = AutoModelForCausalLM.from_pretrained("llmware/slim-nli")
tokenizer = AutoTokenizer.from_pretrained("llmware/slim-nli")
function = "classify"
params = "evidence"
# expects two statements - the first is evidence, and the second is a conclusion
text1 = "The stock market declined yesterday as investors worried increasingly about the slowing economy."
text2 = "Investors are positive about the market."
# the two statements are concatenated with optional/helpful "Evidence: " and "Conclusion: " added
text = "Evidence: " + text1 + "\n" + "Conclusion: " + text2
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-nli")
# input text - expects two statements - the first is evidence, and the second is a conclusion
text1 = "The stock market declined yesterday as investors worried increasingly about the slowing economy."
text2 = "Investors are positive about the market."
text = "Evidence: " + text1 + "\n" + "Conclusion: " + text2
response = slim_model.function_call(text,params=["evidence"], function="classify")
print("llmware - llm_response: ", response)
</details>
## Model Card Contact
Darren Oberst & llmware team
[Join us on Discord](https://discord.gg/MhZn5Nc39h)
|