mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 11:14:43 +02:00
feat: rôle hermes_user + ask-agent + skills délégation
- Nouveau rôle hermes_user : création user/group UID 1002 sur storage-01 et gpu-01, sudoers limités par host, clé SSH ed25519 générée sur storage-01 et distribuée vers gpu-01, ssh_config + known_hosts - Kubeconfig copié depuis ansible vers hermes sur storage-01 - ask-agent : script bash LiteLLM pour déléguer aux agents system/monitor/brain/funk-ai - hermes-skills/funk/agent-delegation : skill Hermes pour les inter-profile calls avec pattern Terminal: ask-agent - Playbooks storage-01 et gpu-01 : ajout du rôle hermes_user Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
0c89d262d1
commit
6be2a89480
7 changed files with 325 additions and 0 deletions
73
ansible/roles/litellm/files/ask-agent
Normal file
73
ansible/roles/litellm/files/ask-agent
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
#!/usr/bin/env bash
|
||||
# ask-agent — Délègue une question à un agent Funk via LiteLLM.
|
||||
#
|
||||
# Usage:
|
||||
# ask-agent <agent> "<question>"
|
||||
# ask-agent <agent> "<question>" [--max-tokens N] [--system "<prompt>"]
|
||||
#
|
||||
# Agents: system | monitor | brain | funk-ai
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
LITELLM_URL="http://127.0.0.1:4000/v1/chat/completions"
|
||||
API_KEY="lm-studio"
|
||||
MAX_TOKENS=1000
|
||||
SYSTEM_PROMPT=""
|
||||
|
||||
declare -A MODELS=(
|
||||
[system]="qwen3-1.7b-system"
|
||||
[monitor]="qwen3-1.7b-monitor"
|
||||
[brain]="claude-sonnet-4-6"
|
||||
[funk-ai]="qwen3-8b"
|
||||
)
|
||||
|
||||
usage() {
|
||||
echo "Usage: ask-agent <agent> \"<question>\" [--max-tokens N] [--system \"<prompt>\"]"
|
||||
echo "Agents: system | monitor | brain | funk-ai"
|
||||
exit 1
|
||||
}
|
||||
|
||||
[ $# -lt 2 ] && usage
|
||||
|
||||
AGENT="$1"
|
||||
QUESTION="$2"
|
||||
shift 2
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--max-tokens) MAX_TOKENS="$2"; shift 2 ;;
|
||||
--system) SYSTEM_PROMPT="$2"; shift 2 ;;
|
||||
*) echo "Option inconnue : $1" >&2; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
MODEL="${MODELS[$AGENT]:-}"
|
||||
if [ -z "$MODEL" ]; then
|
||||
echo "Agent inconnu : $AGENT. Agents valides : ${!MODELS[*]}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Construire le tableau messages JSON
|
||||
if [ -n "$SYSTEM_PROMPT" ]; then
|
||||
MESSAGES=$(jq -n \
|
||||
--arg sp "$SYSTEM_PROMPT" \
|
||||
--arg q "$QUESTION" \
|
||||
'[{"role":"system","content":$sp},{"role":"user","content":$q}]')
|
||||
else
|
||||
MESSAGES=$(jq -n \
|
||||
--arg q "$QUESTION" \
|
||||
'[{"role":"user","content":$q}]')
|
||||
fi
|
||||
|
||||
PAYLOAD=$(jq -n \
|
||||
--arg model "$MODEL" \
|
||||
--argjson messages "$MESSAGES" \
|
||||
--argjson max_tokens "$MAX_TOKENS" \
|
||||
'{model:$model, messages:$messages, max_tokens:$max_tokens, stream:false}')
|
||||
|
||||
curl -s -f \
|
||||
-X POST "$LITELLM_URL" \
|
||||
-H "Authorization: Bearer $API_KEY" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$PAYLOAD" \
|
||||
| jq -r '.choices[0].message.content'
|
||||
Loading…
Add table
Add a link
Reference in a new issue