diff --git a/azure/2-build-deploy.sh b/azure/2-build-deploy.sh index a08f2f80..2d339fe0 100755 --- a/azure/2-build-deploy.sh +++ b/azure/2-build-deploy.sh @@ -140,12 +140,19 @@ DEPLOY_OUTPUT=$(az deployment group create \ neo4jPassword="${NEO4J_PASSWORD:-}" \ neo4jUri="${NEO4J_URI:-bolt://localhost:7687}" \ neo4jUser="${NEO4J_USER:-neo4j}" \ + neo4jDatabase="${NEO4J_DATABASE:-neo4j}" \ graphBackend="${GRAPH_BACKEND:-zep}" \ secretKey="$SECRET_KEY" \ llmBaseUrl="$LLM_BASE_URL" \ llmModelName="$LLM_MODEL_NAME" \ llmBoostBaseUrl="${LLM_BOOST_BASE_URL:-}" \ llmBoostModelName="${LLM_BOOST_MODEL_NAME:-}" \ + llmEmbedApiKey="${LLM_EMBED_API_KEY:-}" \ + llmEmbedBaseUrl="${LLM_EMBED_BASE_URL:-}" \ + llmEmbedModelName="${LLM_EMBED_MODEL_NAME:-}" \ + llmSmallApiKey="${LLM_SMALL_API_KEY:-}" \ + llmSmallBaseUrl="${LLM_SMALL_BASE_URL:-}" \ + llmSmallModelName="${LLM_SMALL_MODEL_NAME:-}" \ oasisDefaultMaxRounds="${OASIS_DEFAULT_MAX_ROUNDS:-10}" \ reportAgentMaxToolCalls="${REPORT_AGENT_MAX_TOOL_CALLS:-5}" \ reportAgentMaxReflectionRounds="${REPORT_AGENT_MAX_REFLECTION_ROUNDS:-2}" \ diff --git a/azure/config.sh.example b/azure/config.sh.example index b2820274..eb1bbd03 100644 --- a/azure/config.sh.example +++ b/azure/config.sh.example @@ -53,22 +53,22 @@ ZEP_API_KEY="" # --- Graphiti + Neo4j (si GRAPH_BACKEND=graphiti) --- # URI bolt del servidor Neo4j (pot ser una VM Azure, ACI, etc.) -# NEO4J_URI="bolt://:7687" -# NEO4J_USER="neo4j" -# NEO4J_PASSWORD="" -# GRAPHITI_BATCH_SIZE="10" # chunks per crida bulk; més alt = més ràpid però més paral·lelisme LLM +NEO4J_URI="bolt://:7687" +NEO4J_USER="neo4j" +NEO4J_PASSWORD="" +NEO4J_DATABASE="neo4j" # --- Embedding LLM (usat per Graphiti per a indexació vectorial) --- # Si no s'estableix, fa fallback a LLM_API_KEY / LLM_BASE_URL. -# LLM_EMBED_API_KEY="" -# LLM_EMBED_BASE_URL="https://.cognitiveservices.azure.com/openai/deployments//embeddings?api-version=2024-05-01-preview" -# LLM_EMBED_MODEL_NAME="text-embedding-3-small" +LLM_EMBED_API_KEY="" +LLM_EMBED_BASE_URL="" +LLM_EMBED_MODEL_NAME="text-embedding-3-small" # --- Small/fast LLM (usat per Graphiti per a reranking i tasques lleugeres) --- # Si no s'estableix, fa fallback a LLM_API_KEY / LLM_BASE_URL / LLM_MODEL_NAME. -# LLM_SMALL_API_KEY="" -# LLM_SMALL_BASE_URL="https://.cognitiveservices.azure.com/openai/deployments//chat/completions?api-version=2024-05-01-preview" -# LLM_SMALL_MODEL_NAME="gpt-4o-mini" +LLM_SMALL_API_KEY="" +LLM_SMALL_BASE_URL="" +LLM_SMALL_MODEL_NAME="" # ── Simulació OASIS (valors per defecte recomanats) ─────────────────────────── OASIS_DEFAULT_MAX_ROUNDS="10" diff --git a/azure/container-app.bicep b/azure/container-app.bicep index 4122fe62..e2ddc321 100644 --- a/azure/container-app.bicep +++ b/azure/container-app.bicep @@ -91,6 +91,35 @@ param llmBoostBaseUrl string = '' @description('Nom del model LLM accelerador (opcional)') param llmBoostModelName string = '' +// ─── Paràmetres LLM embeddings (opcionals — fallback a LLM principal) ───────── + +@description('Clau API LLM embeddings (opcional)') +@secure() +param llmEmbedApiKey string = '' + +@description('URL base LLM embeddings (opcional)') +param llmEmbedBaseUrl string = '' + +@description('Nom del model d\'embeddings') +param llmEmbedModelName string = '' + +// ─── Paràmetres LLM petit/ràpid (opcionals — fallback a LLM principal) ──────── + +@description('Clau API LLM petit (opcional)') +@secure() +param llmSmallApiKey string = '' + +@description('URL base LLM petit (opcional)') +param llmSmallBaseUrl string = '' + +@description('Nom del model LLM petit (opcional)') +param llmSmallModelName string = '' + +// ─── Paràmetres Neo4j addicionals ───────────────────────────────────────────── + +@description('Nom de la base de dades Neo4j') +param neo4jDatabase string = 'neo4j' + // ─── Paràmetres de simulació OASIS ─────────────────────────────────────────── @description('Nombre màxim de rondes per a la simulació OASIS') @@ -115,9 +144,11 @@ var mandatorySecrets = [ { name: 'secret-key', value: secretKey } ] var optionalSecrets = concat( - empty(llmBoostApiKey) ? [] : [{ name: 'llm-boost-api-key', value: llmBoostApiKey }], - empty(zepApiKey) ? [] : [{ name: 'zep-api-key', value: zepApiKey }], - empty(neo4jPassword) ? [] : [{ name: 'neo4j-password', value: neo4jPassword }] + empty(llmBoostApiKey) ? [] : [{ name: 'llm-boost-api-key', value: llmBoostApiKey }], + empty(llmEmbedApiKey) ? [] : [{ name: 'llm-embed-api-key', value: llmEmbedApiKey }], + empty(llmSmallApiKey) ? [] : [{ name: 'llm-small-api-key', value: llmSmallApiKey }], + empty(zepApiKey) ? [] : [{ name: 'zep-api-key', value: zepApiKey }], + empty(neo4jPassword) ? [] : [{ name: 'neo4j-password', value: neo4jPassword }] ) var allSecrets = concat(mandatorySecrets, optionalSecrets) @@ -133,6 +164,11 @@ var mandatoryEnv = [ { name: 'GRAPH_BACKEND', value: graphBackend } { name: 'NEO4J_URI', value: neo4jUri } { name: 'NEO4J_USER', value: neo4jUser } + { name: 'NEO4J_DATABASE', value: neo4jDatabase } + { name: 'LLM_EMBED_BASE_URL', value: llmEmbedBaseUrl } + { name: 'LLM_EMBED_MODEL_NAME', value: llmEmbedModelName } + { name: 'LLM_SMALL_BASE_URL', value: llmSmallBaseUrl } + { name: 'LLM_SMALL_MODEL_NAME', value: llmSmallModelName } { name: 'OASIS_DEFAULT_MAX_ROUNDS', value: oasisDefaultMaxRounds } { name: 'REPORT_AGENT_MAX_TOOL_CALLS', value: reportAgentMaxToolCalls } { name: 'REPORT_AGENT_MAX_REFLECTION_ROUNDS', value: reportAgentMaxReflectionRounds } @@ -140,9 +176,11 @@ var mandatoryEnv = [ { name: 'FLASK_DEBUG', value: 'False' } ] var optionalEnv = concat( - empty(llmBoostApiKey) ? [] : [{ name: 'LLM_BOOST_API_KEY', secretRef: 'llm-boost-api-key' }], - empty(zepApiKey) ? [] : [{ name: 'ZEP_API_KEY', secretRef: 'zep-api-key' }], - empty(neo4jPassword) ? [] : [{ name: 'NEO4J_PASSWORD', secretRef: 'neo4j-password' }] + empty(llmBoostApiKey) ? [] : [{ name: 'LLM_BOOST_API_KEY', secretRef: 'llm-boost-api-key' }], + empty(llmEmbedApiKey) ? [] : [{ name: 'LLM_EMBED_API_KEY', secretRef: 'llm-embed-api-key' }], + empty(llmSmallApiKey) ? [] : [{ name: 'LLM_SMALL_API_KEY', secretRef: 'llm-small-api-key' }], + empty(zepApiKey) ? [] : [{ name: 'ZEP_API_KEY', secretRef: 'zep-api-key' }], + empty(neo4jPassword) ? [] : [{ name: 'NEO4J_PASSWORD', secretRef: 'neo4j-password' }] ) var allEnv = concat(mandatoryEnv, optionalEnv)