初始化项目,由ModelHub XC社区提供模型
Model: abhaybhargav/PWNISMS-Threat-Model-Structured Source: Original Platform
This commit is contained in:
38
.gitattributes
vendored
Normal file
38
.gitattributes
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.arrow filter=lfs diff=lfs merge=lfs -text
|
||||
*.bin filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
||||
*.ftz filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.h5 filter=lfs diff=lfs merge=lfs -text
|
||||
*.joblib filter=lfs diff=lfs merge=lfs -text
|
||||
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
||||
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
||||
*.model filter=lfs diff=lfs merge=lfs -text
|
||||
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
||||
*.npy filter=lfs diff=lfs merge=lfs -text
|
||||
*.npz filter=lfs diff=lfs merge=lfs -text
|
||||
*.onnx filter=lfs diff=lfs merge=lfs -text
|
||||
*.ot filter=lfs diff=lfs merge=lfs -text
|
||||
*.parquet filter=lfs diff=lfs merge=lfs -text
|
||||
*.pb filter=lfs diff=lfs merge=lfs -text
|
||||
*.pickle filter=lfs diff=lfs merge=lfs -text
|
||||
*.pkl filter=lfs diff=lfs merge=lfs -text
|
||||
*.pt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pth filter=lfs diff=lfs merge=lfs -text
|
||||
*.rar filter=lfs diff=lfs merge=lfs -text
|
||||
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
||||
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
||||
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
||||
*.tar filter=lfs diff=lfs merge=lfs -text
|
||||
*.tflite filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.wasm filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
||||
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
||||
tokenizer.json filter=lfs diff=lfs merge=lfs -text
|
||||
PWNISMS-Threat-Model-Structured-F16.gguf filter=lfs diff=lfs merge=lfs -text
|
||||
PWNISMS-Threat-Model-Structured-Q4_K_M.gguf filter=lfs diff=lfs merge=lfs -text
|
||||
208
LICENSE
Normal file
208
LICENSE
Normal file
@@ -0,0 +1,208 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
---
|
||||
|
||||
Derivative work notice: This model is a fine-tuned derivative of
|
||||
Qwen/Qwen2.5-1.5B-Instruct (https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct),
|
||||
released under the Apache License, Version 2.0. Modifications: LoRA
|
||||
fine-tuning and weight fusion for structured PWNISMS threat-model JSON output.
|
||||
3
PWNISMS-Threat-Model-Structured-F16.gguf
Normal file
3
PWNISMS-Threat-Model-Structured-F16.gguf
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fc605efdd5d725e8f00c1c3fe4084f054d6090bb54f61ca4b12aad77f820269c
|
||||
size 3093669376
|
||||
3
PWNISMS-Threat-Model-Structured-Q4_K_M.gguf
Normal file
3
PWNISMS-Threat-Model-Structured-Q4_K_M.gguf
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:580a725bb5ffb8689490b9f0f6649cd519902d0177b083535a975cde6537666e
|
||||
size 986048512
|
||||
132
README.md
Normal file
132
README.md
Normal file
@@ -0,0 +1,132 @@
|
||||
---
|
||||
license: apache-2.0
|
||||
license_link: https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct/blob/main/LICENSE
|
||||
language:
|
||||
- en
|
||||
pipeline_tag: text-generation
|
||||
base_model: Qwen/Qwen2.5-1.5B-Instruct
|
||||
tags:
|
||||
- chat
|
||||
- mlx
|
||||
- gguf
|
||||
- llama.cpp
|
||||
- ollama
|
||||
- security
|
||||
- threat-modeling
|
||||
- structured-output
|
||||
- json
|
||||
library_name: mlx
|
||||
---
|
||||
|
||||
# PWNISMS-Threat-Model-Structured
|
||||
|
||||
Fused [MLX](https://github.com/ml-explore/mlx) and GGUF releases of **Qwen2.5-1.5B-Instruct** fine-tuned to emit **valid JSON** matching a **PWNISMS** structured threat model (seven domains: Product, Workload, Network, IAM, Secrets, Monitoring, SupplyChain), with optional STRIDE cross-tags and concrete mitigations.
|
||||
|
||||
## Base Model And License
|
||||
|
||||
- **Base:** [`Qwen/Qwen2.5-1.5B-Instruct`](https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct) (Apache-2.0).
|
||||
- This release is a **derivative work** of the base model. The base license applies; retain notices and state modifications as required by Apache-2.0. See [`LICENSE`](LICENSE).
|
||||
|
||||
## Training Summary
|
||||
|
||||
- **Method:** LoRA fine-tuning on MLX (`mlx_lm`), then fused into a single checkpoint.
|
||||
- **Base:** `Qwen/Qwen2.5-1.5B-Instruct`
|
||||
- **LoRA:** rank 8, scale 20, 16 layers, max sequence length 10240, 1200 iterations.
|
||||
- **GGUF conversion:** llama.cpp `convert_hf_to_gguf.py`, plus Q4_K_M quantization with `llama-quantize`.
|
||||
|
||||
## Output Contract
|
||||
|
||||
The model is trained to answer with **JSON only** for a chat shaped as:
|
||||
|
||||
- **System:** PWNISMS architect instructions requiring all seven domains, concrete mitigations, and scenario-grounded components.
|
||||
- **User:** Markdown system description.
|
||||
|
||||
The expected object is defined by the included [`threat_model_schema.json`](threat_model_schema.json).
|
||||
|
||||
**Minimum bar:** at least **5** threats, exactly **7** `pwnisms_coverage` entries, and each threat id must appear under its domain’s `threat_ids`.
|
||||
|
||||
## Limitations And Evaluation
|
||||
|
||||
Internal pulse check (n=20 held-out style samples, local script): **16/20** parse as JSON, **12/20** pass full Pydantic validation, and **12/20** cover all seven domains with the schema. Real deployments should validate outputs with Pydantic or JSON Schema and never treat this model as a substitute for expert review.
|
||||
|
||||
Long scenarios can need **up to ~12k output tokens**; lower caps may truncate JSON.
|
||||
|
||||
## Load And Generate (MLX)
|
||||
|
||||
```python
|
||||
from mlx_lm import load, generate
|
||||
|
||||
model, tokenizer = load("abhaybhargav/PWNISMS-Threat-Model-Structured")
|
||||
|
||||
system = """You are a senior security architect. Produce a PWNISMS threat model for the described system.
|
||||
Address all seven PWNISMS domains: Product, Workload, Network, IAM, Secrets, Monitoring, SupplyChain.
|
||||
Mitigations must reference concrete technologies, configurations, or processes.
|
||||
Return only valid JSON matching the required schema."""
|
||||
|
||||
user = open("scenario.md").read()
|
||||
messages = [{"role": "system", "content": system}, {"role": "user", "content": user}]
|
||||
prompt = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
|
||||
text = generate(model, tokenizer, prompt=prompt, max_tokens=12000, verbose=False)
|
||||
print(text)
|
||||
```
|
||||
|
||||
## Load And Generate (GGUF / llama.cpp)
|
||||
|
||||
Recommended default:
|
||||
|
||||
- `PWNISMS-Threat-Model-Structured-Q4_K_M.gguf` (~940MB): broad local compatibility, much smaller than F16.
|
||||
|
||||
Reference precision:
|
||||
|
||||
- `PWNISMS-Threat-Model-Structured-F16.gguf` (~2.9GB): F16 GGUF export.
|
||||
|
||||
Example with llama.cpp:
|
||||
|
||||
```bash
|
||||
llama-cli \
|
||||
-m PWNISMS-Threat-Model-Structured-Q4_K_M.gguf \
|
||||
--ctx-size 12000 \
|
||||
--temp 0.2 \
|
||||
-p '<|im_start|>system
|
||||
You are a senior security architect. Produce a PWNISMS threat model for the described system.
|
||||
Address all seven PWNISMS domains: Product, Workload, Network, IAM, Secrets, Monitoring, SupplyChain.
|
||||
Mitigations must reference concrete technologies, configurations, or processes.
|
||||
Return only valid JSON matching the required schema.<|im_end|>
|
||||
<|im_start|>user
|
||||
<paste the system scenario markdown here><|im_end|>
|
||||
<|im_start|>assistant
|
||||
'
|
||||
```
|
||||
|
||||
## Ollama
|
||||
|
||||
Create a `Modelfile` next to the downloaded GGUF:
|
||||
|
||||
```text
|
||||
FROM ./PWNISMS-Threat-Model-Structured-Q4_K_M.gguf
|
||||
PARAMETER temperature 0.2
|
||||
PARAMETER num_ctx 12000
|
||||
TEMPLATE """{{ .Prompt }}"""
|
||||
```
|
||||
|
||||
Then run:
|
||||
|
||||
```bash
|
||||
ollama create pwnisms-threat-model-structured -f Modelfile
|
||||
ollama run pwnisms-threat-model-structured
|
||||
```
|
||||
|
||||
## Files
|
||||
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| `model.safetensors` | Fused MLX/HF-format weights |
|
||||
| `PWNISMS-Threat-Model-Structured-Q4_K_M.gguf` | Quantized GGUF for llama.cpp/Ollama/local tools |
|
||||
| `PWNISMS-Threat-Model-Structured-F16.gguf` | F16 GGUF reference export |
|
||||
| `config.json`, `tokenizer.json`, `tokenizer_config.json`, `chat_template.jinja` | Model + tokenizer |
|
||||
| `threat_model_schema.json` | JSON Schema for outputs |
|
||||
| `examples/sample_scenario.md` | Tiny example input shape |
|
||||
|
||||
## Intended Use
|
||||
|
||||
This model is intended to assist application and security architects in drafting structured PWNISMS threat models from system descriptions. It is not a formal risk decision engine and should be reviewed by humans before use in production assurance, audit, or compliance workflows.
|
||||
54
chat_template.jinja
Normal file
54
chat_template.jinja
Normal file
@@ -0,0 +1,54 @@
|
||||
{%- if tools %}
|
||||
{{- '<|im_start|>system\n' }}
|
||||
{%- if messages[0]['role'] == 'system' %}
|
||||
{{- messages[0]['content'] }}
|
||||
{%- else %}
|
||||
{{- 'You are Qwen, created by Alibaba Cloud. You are a helpful assistant.' }}
|
||||
{%- endif %}
|
||||
{{- "\n\n# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }}
|
||||
{%- for tool in tools %}
|
||||
{{- "\n" }}
|
||||
{{- tool | tojson }}
|
||||
{%- endfor %}
|
||||
{{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n" }}
|
||||
{%- else %}
|
||||
{%- if messages[0]['role'] == 'system' %}
|
||||
{{- '<|im_start|>system\n' + messages[0]['content'] + '<|im_end|>\n' }}
|
||||
{%- else %}
|
||||
{{- '<|im_start|>system\nYou are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\n' }}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- for message in messages %}
|
||||
{%- if (message.role == "user") or (message.role == "system" and not loop.first) or (message.role == "assistant" and not message.tool_calls) %}
|
||||
{{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }}
|
||||
{%- elif message.role == "assistant" %}
|
||||
{{- '<|im_start|>' + message.role }}
|
||||
{%- if message.content %}
|
||||
{{- '\n' + message.content }}
|
||||
{%- endif %}
|
||||
{%- for tool_call in message.tool_calls %}
|
||||
{%- if tool_call.function is defined %}
|
||||
{%- set tool_call = tool_call.function %}
|
||||
{%- endif %}
|
||||
{{- '\n<tool_call>\n{"name": "' }}
|
||||
{{- tool_call.name }}
|
||||
{{- '", "arguments": ' }}
|
||||
{{- tool_call.arguments | tojson }}
|
||||
{{- '}\n</tool_call>' }}
|
||||
{%- endfor %}
|
||||
{{- '<|im_end|>\n' }}
|
||||
{%- elif message.role == "tool" %}
|
||||
{%- if (loop.index0 == 0) or (messages[loop.index0 - 1].role != "tool") %}
|
||||
{{- '<|im_start|>user' }}
|
||||
{%- endif %}
|
||||
{{- '\n<tool_response>\n' }}
|
||||
{{- message.content }}
|
||||
{{- '\n</tool_response>' }}
|
||||
{%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
|
||||
{{- '<|im_end|>\n' }}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
{%- if add_generation_prompt %}
|
||||
{{- '<|im_start|>assistant\n' }}
|
||||
{%- endif %}
|
||||
30
config.json
Normal file
30
config.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"architectures": [
|
||||
"Qwen2ForCausalLM"
|
||||
],
|
||||
"attention_dropout": 0.0,
|
||||
"bos_token_id": 151643,
|
||||
"eos_token_id": [
|
||||
151645,
|
||||
151643
|
||||
],
|
||||
"hidden_act": "silu",
|
||||
"hidden_size": 1536,
|
||||
"initializer_range": 0.02,
|
||||
"intermediate_size": 8960,
|
||||
"max_position_embeddings": 32768,
|
||||
"max_window_layers": 21,
|
||||
"model_type": "qwen2",
|
||||
"num_attention_heads": 12,
|
||||
"num_hidden_layers": 28,
|
||||
"num_key_value_heads": 2,
|
||||
"rms_norm_eps": 1e-06,
|
||||
"rope_theta": 1000000.0,
|
||||
"sliding_window": 32768,
|
||||
"tie_word_embeddings": true,
|
||||
"torch_dtype": "bfloat16",
|
||||
"transformers_version": "4.43.1",
|
||||
"use_cache": true,
|
||||
"use_sliding_window": false,
|
||||
"vocab_size": 151936
|
||||
}
|
||||
23
examples/sample_scenario.md
Normal file
23
examples/sample_scenario.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Example scenario (excerpt)
|
||||
|
||||
Use a full system description in markdown: components, data flows, users, compliance, and trust boundaries. The model responds with a single JSON object (no code fences) matching `threat_model_schema.json`.
|
||||
|
||||
This file is illustrative; replace with your own scenario text.
|
||||
|
||||
## Sample title
|
||||
|
||||
A minimal API service that issues OAuth tokens to internal services behind mTLS.
|
||||
|
||||
## Application Information
|
||||
|
||||
- REST API on AWS Lambda behind API Gateway
|
||||
- Tokens signed with an AWS KMS key; rotation weekly
|
||||
- Audit logs to CloudWatch
|
||||
|
||||
## Users
|
||||
|
||||
- Internal service principals only (no public internet clients)
|
||||
|
||||
## Compliance
|
||||
|
||||
- SOC 2
|
||||
14
generation_config.json
Normal file
14
generation_config.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"bos_token_id": 151643,
|
||||
"pad_token_id": 151643,
|
||||
"do_sample": true,
|
||||
"eos_token_id": [
|
||||
151645,
|
||||
151643
|
||||
],
|
||||
"repetition_penalty": 1.1,
|
||||
"temperature": 0.7,
|
||||
"top_p": 0.8,
|
||||
"top_k": 20,
|
||||
"transformers_version": "4.37.0"
|
||||
}
|
||||
3
model.safetensors
Normal file
3
model.safetensors
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0cc8b858e1065f695ebb537969b61dd416e9b438e1ad36a6a90340369ca61f2e
|
||||
size 3087467005
|
||||
346
model.safetensors.index.json
Normal file
346
model.safetensors.index.json
Normal file
@@ -0,0 +1,346 @@
|
||||
{
|
||||
"metadata": {
|
||||
"total_size": 3087428608,
|
||||
"total_parameters": 1543714304
|
||||
},
|
||||
"weight_map": {
|
||||
"model.embed_tokens.weight": "model.safetensors",
|
||||
"model.layers.0.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.0.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.0.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.0.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.0.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.0.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.0.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.0.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.0.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.0.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.0.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.0.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.1.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.1.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.1.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.1.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.1.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.1.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.1.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.1.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.1.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.1.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.1.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.1.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.10.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.10.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.10.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.10.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.10.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.10.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.10.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.10.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.10.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.10.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.10.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.10.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.11.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.11.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.11.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.11.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.11.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.11.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.11.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.11.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.11.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.11.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.11.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.11.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.12.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.12.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.12.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.12.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.12.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.12.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.12.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.12.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.12.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.12.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.12.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.12.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.13.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.13.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.13.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.13.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.13.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.13.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.13.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.13.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.13.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.13.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.13.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.13.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.14.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.14.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.14.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.14.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.14.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.14.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.14.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.14.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.14.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.14.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.14.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.14.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.15.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.15.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.15.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.15.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.15.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.15.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.15.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.15.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.15.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.15.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.15.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.15.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.16.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.16.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.16.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.16.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.16.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.16.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.16.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.16.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.16.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.16.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.16.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.16.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.17.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.17.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.17.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.17.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.17.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.17.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.17.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.17.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.17.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.17.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.17.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.17.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.18.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.18.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.18.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.18.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.18.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.18.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.18.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.18.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.18.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.18.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.18.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.18.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.19.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.19.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.19.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.19.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.19.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.19.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.19.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.19.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.19.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.19.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.19.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.19.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.2.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.2.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.2.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.2.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.2.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.2.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.2.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.2.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.2.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.2.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.2.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.2.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.20.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.20.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.20.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.20.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.20.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.20.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.20.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.20.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.20.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.20.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.20.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.20.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.21.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.21.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.21.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.21.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.21.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.21.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.21.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.21.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.21.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.21.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.21.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.21.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.22.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.22.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.22.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.22.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.22.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.22.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.22.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.22.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.22.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.22.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.22.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.22.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.23.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.23.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.23.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.23.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.23.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.23.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.23.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.23.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.23.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.23.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.23.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.23.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.24.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.24.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.24.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.24.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.24.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.24.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.24.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.24.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.24.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.24.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.24.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.24.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.25.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.25.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.25.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.25.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.25.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.25.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.25.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.25.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.25.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.25.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.25.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.25.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.26.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.26.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.26.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.26.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.26.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.26.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.26.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.26.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.26.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.26.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.26.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.26.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.27.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.27.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.27.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.27.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.27.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.27.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.27.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.27.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.27.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.27.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.27.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.27.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.3.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.3.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.3.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.3.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.3.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.3.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.3.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.3.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.3.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.3.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.3.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.3.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.4.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.4.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.4.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.4.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.4.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.4.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.4.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.4.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.4.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.4.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.4.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.4.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.5.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.5.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.5.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.5.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.5.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.5.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.5.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.5.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.5.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.5.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.5.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.5.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.6.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.6.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.6.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.6.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.6.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.6.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.6.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.6.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.6.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.6.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.6.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.6.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.7.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.7.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.7.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.7.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.7.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.7.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.7.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.7.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.7.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.7.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.7.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.7.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.8.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.8.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.8.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.8.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.8.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.8.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.8.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.8.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.8.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.8.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.8.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.8.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.layers.9.input_layernorm.weight": "model.safetensors",
|
||||
"model.layers.9.mlp.down_proj.weight": "model.safetensors",
|
||||
"model.layers.9.mlp.gate_proj.weight": "model.safetensors",
|
||||
"model.layers.9.mlp.up_proj.weight": "model.safetensors",
|
||||
"model.layers.9.post_attention_layernorm.weight": "model.safetensors",
|
||||
"model.layers.9.self_attn.k_proj.bias": "model.safetensors",
|
||||
"model.layers.9.self_attn.k_proj.weight": "model.safetensors",
|
||||
"model.layers.9.self_attn.o_proj.weight": "model.safetensors",
|
||||
"model.layers.9.self_attn.q_proj.bias": "model.safetensors",
|
||||
"model.layers.9.self_attn.q_proj.weight": "model.safetensors",
|
||||
"model.layers.9.self_attn.v_proj.bias": "model.safetensors",
|
||||
"model.layers.9.self_attn.v_proj.weight": "model.safetensors",
|
||||
"model.norm.weight": "model.safetensors"
|
||||
}
|
||||
}
|
||||
504
threat_model_schema.json
Normal file
504
threat_model_schema.json
Normal file
@@ -0,0 +1,504 @@
|
||||
{
|
||||
"$defs": {
|
||||
"Asset": {
|
||||
"properties": {
|
||||
"id": {
|
||||
"description": "Unique identifier, e.g. 'A-01'.",
|
||||
"title": "Id",
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"title": "Name",
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"title": "Description",
|
||||
"type": "string"
|
||||
},
|
||||
"classification": {
|
||||
"$ref": "#/$defs/DataClassification"
|
||||
},
|
||||
"location": {
|
||||
"description": "Where stored/processed, e.g. 'RDS PostgreSQL', 'S3 bucket prod-lab-pdfs'.",
|
||||
"title": "Location",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"name",
|
||||
"description",
|
||||
"classification",
|
||||
"location"
|
||||
],
|
||||
"title": "Asset",
|
||||
"type": "object"
|
||||
},
|
||||
"DataClassification": {
|
||||
"enum": [
|
||||
"Public",
|
||||
"Internal",
|
||||
"Confidential",
|
||||
"Restricted"
|
||||
],
|
||||
"title": "DataClassification",
|
||||
"type": "string"
|
||||
},
|
||||
"DataFlow": {
|
||||
"properties": {
|
||||
"id": {
|
||||
"description": "Unique identifier, e.g. 'DF-01'.",
|
||||
"title": "Id",
|
||||
"type": "string"
|
||||
},
|
||||
"source": {
|
||||
"description": "Originating component.",
|
||||
"title": "Source",
|
||||
"type": "string"
|
||||
},
|
||||
"destination": {
|
||||
"description": "Receiving component.",
|
||||
"title": "Destination",
|
||||
"type": "string"
|
||||
},
|
||||
"data_classification": {
|
||||
"$ref": "#/$defs/DataClassification"
|
||||
},
|
||||
"protocol": {
|
||||
"description": "Concrete protocol, e.g. 'HTTPS', 'MQTT/TLS', 'gRPC', 'AMQP'.",
|
||||
"title": "Protocol",
|
||||
"type": "string"
|
||||
},
|
||||
"crosses_boundary": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"description": "ID of the TrustBoundary this flow crosses, if any.",
|
||||
"title": "Crosses Boundary"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"source",
|
||||
"destination",
|
||||
"data_classification",
|
||||
"protocol"
|
||||
],
|
||||
"title": "DataFlow",
|
||||
"type": "object"
|
||||
},
|
||||
"Mitigation": {
|
||||
"properties": {
|
||||
"description": {
|
||||
"description": "Specific, actionable control. Must reference a concrete technology, configuration, or process \u2014 not a generic category. Bad: 'use encryption'. Good: 'enable TLS 1.3 with mutual auth on the MQTT broker using AWS IoT Core device certificates'.",
|
||||
"minLength": 15,
|
||||
"title": "Description",
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"$ref": "#/$defs/MitigationType"
|
||||
},
|
||||
"priority": {
|
||||
"$ref": "#/$defs/MitigationPriority"
|
||||
},
|
||||
"references": {
|
||||
"anyOf": [
|
||||
{
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"description": "Optional references: OWASP/NIST/CIS control IDs or doc links.",
|
||||
"title": "References"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"description",
|
||||
"type",
|
||||
"priority"
|
||||
],
|
||||
"title": "Mitigation",
|
||||
"type": "object"
|
||||
},
|
||||
"MitigationPriority": {
|
||||
"enum": [
|
||||
"P0",
|
||||
"P1",
|
||||
"P2"
|
||||
],
|
||||
"title": "MitigationPriority",
|
||||
"type": "string"
|
||||
},
|
||||
"MitigationType": {
|
||||
"enum": [
|
||||
"Preventive",
|
||||
"Detective",
|
||||
"Corrective",
|
||||
"Deterrent"
|
||||
],
|
||||
"title": "MitigationType",
|
||||
"type": "string"
|
||||
},
|
||||
"PwnismsDomain": {
|
||||
"description": "The seven PWNISMS domains. All seven must be addressed in every model.",
|
||||
"enum": [
|
||||
"Product",
|
||||
"Workload",
|
||||
"Network",
|
||||
"IAM",
|
||||
"Secrets",
|
||||
"Monitoring",
|
||||
"SupplyChain"
|
||||
],
|
||||
"title": "PwnismsDomain",
|
||||
"type": "string"
|
||||
},
|
||||
"PwnismsDomainCoverage": {
|
||||
"properties": {
|
||||
"domain": {
|
||||
"$ref": "#/$defs/PwnismsDomain"
|
||||
},
|
||||
"addressed": {
|
||||
"description": "True if threats in this domain were identified; False if N/A.",
|
||||
"title": "Addressed",
|
||||
"type": "boolean"
|
||||
},
|
||||
"threat_ids": {
|
||||
"description": "IDs of threats belonging to this domain (if addressed=True).",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Threat Ids",
|
||||
"type": "array"
|
||||
},
|
||||
"justification_if_not_applicable": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"description": "Required when addressed=False. Must explain why the domain is not relevant to this specific system. Never leave domains unaddressed without justification.",
|
||||
"title": "Justification If Not Applicable"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"domain",
|
||||
"addressed"
|
||||
],
|
||||
"title": "PwnismsDomainCoverage",
|
||||
"type": "object"
|
||||
},
|
||||
"RiskLevel": {
|
||||
"enum": [
|
||||
"High",
|
||||
"Medium",
|
||||
"Low"
|
||||
],
|
||||
"title": "RiskLevel",
|
||||
"type": "string"
|
||||
},
|
||||
"Scope": {
|
||||
"properties": {
|
||||
"in_scope": {
|
||||
"description": "Components, flows, or features being threat-modeled.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"minItems": 1,
|
||||
"title": "In Scope",
|
||||
"type": "array"
|
||||
},
|
||||
"out_of_scope": {
|
||||
"description": "Explicitly excluded elements.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Out Of Scope",
|
||||
"type": "array"
|
||||
},
|
||||
"assumptions": {
|
||||
"description": "Assumptions that, if invalidated, would change the model.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Assumptions",
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"in_scope"
|
||||
],
|
||||
"title": "Scope",
|
||||
"type": "object"
|
||||
},
|
||||
"SecurityObjective": {
|
||||
"enum": [
|
||||
"Confidentiality",
|
||||
"Integrity",
|
||||
"Availability",
|
||||
"Authenticity",
|
||||
"NonRepudiation",
|
||||
"Authorization",
|
||||
"Privacy"
|
||||
],
|
||||
"title": "SecurityObjective",
|
||||
"type": "string"
|
||||
},
|
||||
"StrideCategory": {
|
||||
"description": "Optional STRIDE cross-categorization per threat.",
|
||||
"enum": [
|
||||
"Spoofing",
|
||||
"Tampering",
|
||||
"Repudiation",
|
||||
"InformationDisclosure",
|
||||
"DenialOfService",
|
||||
"ElevationOfPrivilege"
|
||||
],
|
||||
"title": "StrideCategory",
|
||||
"type": "string"
|
||||
},
|
||||
"Threat": {
|
||||
"properties": {
|
||||
"id": {
|
||||
"description": "Unique identifier, e.g. 'T-01'.",
|
||||
"title": "Id",
|
||||
"type": "string"
|
||||
},
|
||||
"title": {
|
||||
"description": "Short title of the threat.",
|
||||
"maxLength": 120,
|
||||
"title": "Title",
|
||||
"type": "string"
|
||||
},
|
||||
"pwnisms_domain": {
|
||||
"$ref": "#/$defs/PwnismsDomain",
|
||||
"description": "Primary PWNISMS domain this threat belongs to."
|
||||
},
|
||||
"stride_category": {
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/$defs/StrideCategory"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"description": "Optional STRIDE cross-categorization for this threat."
|
||||
},
|
||||
"affected_component": {
|
||||
"description": "The component under threat. Must be a component that appears in or is directly implied by the input system description \u2014 do not invent components not present in the scenario.",
|
||||
"title": "Affected Component",
|
||||
"type": "string"
|
||||
},
|
||||
"affected_asset_ids": {
|
||||
"description": "IDs of assets impacted (referencing Asset.id).",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Affected Asset Ids",
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"description": "What could go wrong. 2\u20134 sentences, concrete and specific.",
|
||||
"minLength": 50,
|
||||
"title": "Description",
|
||||
"type": "string"
|
||||
},
|
||||
"attack_vector": {
|
||||
"description": "How an attacker realistically exploits this threat.",
|
||||
"minLength": 20,
|
||||
"title": "Attack Vector",
|
||||
"type": "string"
|
||||
},
|
||||
"preconditions": {
|
||||
"description": "What must be true for this threat to be exploitable.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Preconditions",
|
||||
"type": "array"
|
||||
},
|
||||
"security_objectives_violated": {
|
||||
"items": {
|
||||
"$ref": "#/$defs/SecurityObjective"
|
||||
},
|
||||
"minItems": 1,
|
||||
"title": "Security Objectives Violated",
|
||||
"type": "array"
|
||||
},
|
||||
"likelihood": {
|
||||
"$ref": "#/$defs/RiskLevel"
|
||||
},
|
||||
"likelihood_rationale": {
|
||||
"minLength": 20,
|
||||
"title": "Likelihood Rationale",
|
||||
"type": "string"
|
||||
},
|
||||
"impact": {
|
||||
"$ref": "#/$defs/RiskLevel"
|
||||
},
|
||||
"impact_rationale": {
|
||||
"minLength": 20,
|
||||
"title": "Impact Rationale",
|
||||
"type": "string"
|
||||
},
|
||||
"mitigations": {
|
||||
"description": "At least one concrete mitigation per threat.",
|
||||
"items": {
|
||||
"$ref": "#/$defs/Mitigation"
|
||||
},
|
||||
"minItems": 1,
|
||||
"title": "Mitigations",
|
||||
"type": "array"
|
||||
},
|
||||
"residual_risk": {
|
||||
"description": "Risk that remains after mitigations are applied.",
|
||||
"title": "Residual Risk",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"title",
|
||||
"pwnisms_domain",
|
||||
"affected_component",
|
||||
"description",
|
||||
"attack_vector",
|
||||
"security_objectives_violated",
|
||||
"likelihood",
|
||||
"likelihood_rationale",
|
||||
"impact",
|
||||
"impact_rationale",
|
||||
"mitigations",
|
||||
"residual_risk"
|
||||
],
|
||||
"title": "Threat",
|
||||
"type": "object"
|
||||
},
|
||||
"TrustBoundary": {
|
||||
"properties": {
|
||||
"id": {
|
||||
"description": "Unique identifier, e.g. 'TB-01'.",
|
||||
"title": "Id",
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"description": "Short name, e.g. 'Internet to API Gateway'.",
|
||||
"title": "Name",
|
||||
"type": "string"
|
||||
},
|
||||
"between": {
|
||||
"description": "The two sides of the boundary: [outside, inside].",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"maxItems": 2,
|
||||
"minItems": 2,
|
||||
"title": "Between",
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"title": "Description",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"name",
|
||||
"between",
|
||||
"description"
|
||||
],
|
||||
"title": "TrustBoundary",
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"description": "A PWNISMS threat model for the system described in the input scenario.\n\nFill every field. Every one of the seven PWNISMS domains must appear in\n`pwnisms_coverage` \u2014 either with threats, or with an explicit N/A\njustification. No silent omissions.",
|
||||
"properties": {
|
||||
"system_summary": {
|
||||
"description": "2\u20134 sentence summary of the system being threat-modeled.",
|
||||
"maxLength": 800,
|
||||
"minLength": 50,
|
||||
"title": "System Summary",
|
||||
"type": "string"
|
||||
},
|
||||
"scope": {
|
||||
"$ref": "#/$defs/Scope"
|
||||
},
|
||||
"assets": {
|
||||
"description": "Named information/system assets worth protecting.",
|
||||
"items": {
|
||||
"$ref": "#/$defs/Asset"
|
||||
},
|
||||
"title": "Assets",
|
||||
"type": "array"
|
||||
},
|
||||
"trust_boundaries": {
|
||||
"description": "At least one trust boundary must be identified.",
|
||||
"items": {
|
||||
"$ref": "#/$defs/TrustBoundary"
|
||||
},
|
||||
"minItems": 1,
|
||||
"title": "Trust Boundaries",
|
||||
"type": "array"
|
||||
},
|
||||
"data_flows": {
|
||||
"description": "Key data flows, especially those crossing trust boundaries.",
|
||||
"items": {
|
||||
"$ref": "#/$defs/DataFlow"
|
||||
},
|
||||
"title": "Data Flows",
|
||||
"type": "array"
|
||||
},
|
||||
"threats": {
|
||||
"description": "Identified threats. Typical count: 8\u201325 depending on system complexity. Each threat must be tagged with a PWNISMS domain.",
|
||||
"items": {
|
||||
"$ref": "#/$defs/Threat"
|
||||
},
|
||||
"minItems": 5,
|
||||
"title": "Threats",
|
||||
"type": "array"
|
||||
},
|
||||
"pwnisms_coverage": {
|
||||
"description": "One entry per PWNISMS domain. All seven domains must be present. Domains without identified threats must carry an explicit justification for why they do not apply to this system.",
|
||||
"items": {
|
||||
"$ref": "#/$defs/PwnismsDomainCoverage"
|
||||
},
|
||||
"title": "Pwnisms Coverage",
|
||||
"type": "array"
|
||||
},
|
||||
"open_questions": {
|
||||
"description": "Ambiguities or missing information in the scenario that would materially affect the threat model if resolved.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Open Questions",
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"system_summary",
|
||||
"scope",
|
||||
"trust_boundaries",
|
||||
"threats",
|
||||
"pwnisms_coverage"
|
||||
],
|
||||
"title": "ThreatModel",
|
||||
"type": "object"
|
||||
}
|
||||
3
tokenizer.json
Normal file
3
tokenizer.json
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3fd169731d2cbde95e10bf356d66d5997fd885dd8dbb6fb4684da3f23b2585d8
|
||||
size 11421892
|
||||
31
tokenizer_config.json
Normal file
31
tokenizer_config.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"add_prefix_space": false,
|
||||
"backend": "tokenizers",
|
||||
"bos_token": null,
|
||||
"clean_up_tokenization_spaces": false,
|
||||
"eos_token": "<|im_end|>",
|
||||
"errors": "replace",
|
||||
"extra_special_tokens": [
|
||||
"<|im_start|>",
|
||||
"<|im_end|>",
|
||||
"<|object_ref_start|>",
|
||||
"<|object_ref_end|>",
|
||||
"<|box_start|>",
|
||||
"<|box_end|>",
|
||||
"<|quad_start|>",
|
||||
"<|quad_end|>",
|
||||
"<|vision_start|>",
|
||||
"<|vision_end|>",
|
||||
"<|vision_pad|>",
|
||||
"<|image_pad|>",
|
||||
"<|video_pad|>"
|
||||
],
|
||||
"is_local": true,
|
||||
"local_files_only": false,
|
||||
"model_max_length": 131072,
|
||||
"pad_token": "<|endoftext|>",
|
||||
"split_special_tokens": false,
|
||||
"tokenizer_class": "Qwen2Tokenizer",
|
||||
"tool_parser_type": "json_tools",
|
||||
"unk_token": null
|
||||
}
|
||||
Reference in New Issue
Block a user