File size: 3,108 Bytes
ea9bd81 f4d28cb ea9bd81 0277199 e6241ff 0277199 9957bbd 0277199 e6241ff 0277199 f4d28cb 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 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 |
---
license: apache-2.0
inference: false
---
# Model Card for Model ID
<!-- 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 provide a flexible natural language generative model that can be used 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")
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)
|