Views
No views yet
| Métrique | Valeur |
|---|---|
| Score validation | 15/15 (100%) |
| Fonctions couvertes | 15 |
| Format | ONNX int4 (onnxruntime-genai) |
| Base model | Qwen/Qwen2.5-3B-Instruct |
| Latence CPU (8 vCPU) | ~8–12s/requête |
1import onnxruntime_genai as og
2import json
3
4model = og.Model("patlegu/crowdsec-qwen25-onnx-int4")
5tokenizer = og.Tokenizer(model)
6tokenizer_stream = tokenizer.create_stream()
7
8cap = {
9 "directive": "add_decision",
10 "entities": {"IP_ADDRESS": ["185.220.101.5"]},
11 "context": {"source": "coordinator", "reason": "portscan"}
12}
13
14prompt = (
15 "<|im_start|>system\n"
16 "Tu es un agent CROWDSEC. Tu reçois des directives structurées du coordinateur "
17 "sous forme de paquets JSON (format CAP v1) et tu génères des appels d'API précis "
18 "sous forme de tool_calls. Tu ne réponds jamais en langage naturel.\n"
19 "<|im_end|>\n"
20 "<|im_start|>user\n"
21 + json.dumps(cap) +
22 "\n<|im_end|>\n"
23 "<|im_start|>assistant\n"
24)
25
26import numpy as np
27input_ids = np.array(tokenizer.encode(prompt), dtype=np.int32)
28
29params = og.GeneratorParams(model)
30params.set_search_options(max_length=len(input_ids) + 256, temperature=0.1, do_sample=False)
31
32generator = og.Generator(model, params)
33generator.append_tokens(input_ids)
34
35output_tokens = []
36while not generator.is_done():
37 generator.generate_next_token()
38 token = generator.get_next_tokens()[0]
39 output_tokens.append(token)
40
41print(tokenizer.decode(output_tokens))
42# → [{"type": "function", "function": {"name": "...", "arguments": "..."}}]pip install onnxruntime-genai numpy1{
2 "directive": "add_decision",
3 "entities": {"IP_ADDRESS": ["185.220.101.5"]},
4 "context": {"source": "coordinator", "reason": "portscan"}
5}tool_call JSON :[{"type": "function", "function": {"name": "directive_name", "arguments": "{}"}}]