====== AI coding samples ====== ===== Question RegEx ===== > peux tu générer en Php une expression régulière pour lire les lignes au format syslog ? ==== Avec ollama ==== [[https://ollama.com/library/deepcoder|deepcoder 14b]] : Avec cette simple question ça a répondu: * ❓ ''/^([A-Za-z]+\\d+ \\d{1,2}:\\d{2}:\\d{2})\\s+(\\S+)\\s+(\\w+)\\s+(.*)$/m'' Je repose la question en précisant la RFC 3164 : * ❌ ''^(\d+:\d+:\d+|\+\d+:\d+:\d+)\s+([a-zA-Z0-9_\-\.]+)\s*(\[\d+-[A-Za-z]+\])?\s+(.*)$'' [[https://ollama.com/library/smollm2|smollm2]] [[https://ollama.com/library/codestral|codestral]] ==== Online ==== [[https://chat.mistral.ai|chat.mistral.ai]] : Avec la question en précisant la RFC 3164 : * RFC 5424 * ❓ ''/^<(\d+)>([^\s]+)\s+(\S+\s+\S+\s+\S+)\s+([^\s]+)\s+([^\s]+)(?:\[(\d+)\])?(?:[^\s]+)?\s*(.*)$/'' * RFC 3164 * ❌ ''/^<(\d+)>([A-Za-z]{3}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2})\s+([^\s]+)\s+(.*)$/'' En lui disant que c'est faux et en donnant des exemples : * ✅ ''/^(\w{3}\s+\d{2}\s+\d{2}:\d{2}:\d{2})\s+([^\s]+)\s+([^:\s]+)(?:\[(\d+)\])?:\s*(.*)$/'' ===== Petit projet carto ===== Prompts: * hello * Do you know how to make with Javascript and Leaflet an animated map with a serie of markers with timestamp ? * yes, create please * with Php can you generate data from the SQLite @crowdsec.db.sqlite with fields "source_latitude" as latitude, "source_longitude" as longitude, "source_as_name" as name and "created_at" for timestamp * Can you add in the view, at the right of "speed" control, the first and last date of events ==== Avec opencode ==== Comparaison des résultats selon les models: {{ informatique:ai_coding:crowdsec-map_big-pickle.png?direct&220|Big Pickle}} * **Big Pickle** (opencode zen) [[https://lab.cyrille.giquello.fr/AI-compare/crowdsec-alerts-map.BigPickle/index.html|Démo]] * un joli panneau de contrôle sous la carte * avec choix de la vitesse et progress bar * une popup sur les points * usage d'un cluster * à trouvé tout seul la table ''alerts'' {{ informatique:ai_coding:crowdsec-map_grok-code-fast-1.png?direct&220|Grok Code Fast 1}} * **Grok Code Fast 1** (opencode zen) [[https://code.devhost/dev/crowdsec/crowdsec-alerts-map.Grok-Code-Fast-1/index.html|Démo]] * fait juste le job, à minima, sans style ni ihm bien faite * à trouvé tout seul la table ''alerts'' {{ informatique:ai_coding:crowdsec-map_qwen3-coder-30b-a3b-instruct.png?direct&220|qwen3-coder-30b-a3b-instruct}} * **Qwen3-Coder-30B-A3B-Instruct** (opencode ovhcloud) [[https://lab.cyrille.giquello.fr/AI-compare/crowdsec-alerts-map.Qwen3-Coder-30B-A3B-Instruct/crowdsec-map.html|Démo]] * fait juste le job, à minima, sans style ni ihm bien faite * à trouvé tout seul la table ''alerts'' * //**Codestral** (mistral)// * Parti dans une longue boucle d'install de packages npm ! * je l'ai stoppé (déjà 535 packages dans nodes_modules) * Recommence en précisant dans le prompt de ne pas utilisé npm mais seulement un cdn * Ça essaye plein de chose mais sans succès. * J'abandonne {{ informatique:ai_coding:crowdsec-map_gpt-oss-120b.png?direct&220|Gpt Oss 120B}} * **Gpt Oss 120B** (ovhcloud) [[https://lab.cyrille.giquello.fr/AI-compare/crowdsec-alerts-map.Gpt-Oss-120B/index.html|Démo]] * les simples prompts ne suffisent pas, il faut discuter pour qu'il passe à l'action, et les temps de réflexion sont beaucoup plus long (il itère beaucoup) * j'ai du corrigé les liens CDN car il a utilisé une librairie ''leaflet-timedimension''. Mais bataille infinie car il remet le mauvais, même quand je lui parle d'autre chose. * Sur une demande, il traite aussi d'autres sujets ... {{ informatique:ai_coding:crowdsec-map_gpt-oss-20b.png?direct&220|}} * **Gpt Oss 20B** (ovhcloud) [[https://lab.cyrille.giquello.fr/AI-compare/crowdsec-alerts-map.Gpt-Oss-20B/index.html|Démo]] * plus efficace que le ''120B'', tout en étant toujours verbeux * a fait quelques erreurs de syntaxe * **DeepSeek-R1-Distill-Llama-70B** (ovhcloud) * pas d'agent, pas d'accès au fichier, que du code dans le chat Pour l'instant mon préféré est "Big Pickle" fourni gratos (pour l'instant) par opencode/zen. C'est le moins verbeux et qui cible vraiment bien les endroits où opérer, ne retouche pas ailleurs sans demande, et à partir de prompts simples (sans REcontextualiser).