Globusfiguren fra Eco², bearbeidet for denne porteføljen ut fra den nyeste offisielle hovedfiguren: en himmelblå globus med grønne landområder, en spire på toppen og et brunt smilende ansikt
Tilbake til salen

Eco²

Backend · Cloud infrastructure

Veiledning i kildesortering ut fra ett bilde og en samtale.

En alt-i-ett-AI-assistent som forstår hvordan kildesortering fungerer i Korea.

2025.10.31 — 2026.02.10

Teamprosjekt · grunnlag for infrastruktur og utrulling → domenebackend → asynkron behandling, samtaleagent, verifisering

2025 새싹 해커톤 (Saessak Hackathon)Excellence Award · 2. desember 2025

  • NettappDriften avsluttet

Eco² vocabulary

Lens
Service Path
Request Path
Async Work
Operations
Infrastructure
Measurement
  1. edge
  2. auth offload
  3. domain api
  1. task queue
  2. scan pipeline
  3. chat agent
  4. event bus
  1. cluster
  2. gitops
  3. autoscaling
  1. observability
  2. load test
  3. evaluation

Edge: ROUTE 53 · ALB · HTTPS 443 · internet-facing · external-dns · istio-ingressgateway · NodePort · eco2-gateway · VirtualService · x-canary · AuthorizationPolicy · ENVOY SIDECAR · kiali-serverAuth Offload: AuthorizationPolicy · action: CUSTOM · notPaths · envoyExtAuthzGrpc · failOpen: false · CheckRequest · x-user-id · BlacklistCache · BootstrapFromRedis · outbox:blacklist · blacklist.events · UsersServiceDomain API: VirtualService · x-user-id · /api/v1/scan · X-Idempotency-Key · job_id · stream_url · 202 ACCEPTED · Retry-After · ScanTask · UsersService · ImageService · ENVOY SIDECARTask Queue: outbox:blacklist · blacklist.events · RabbitmqCluster · scan.direct · reward.events · dlx · x-dead-letter-exchange · chat.process · AioPikaBroker · task_acks_late · apply_async · gevent · scan.vision · scan.rule · scan.answer · scan.reward · CELERY CHAIN · QueueLength · inspect ping · QUEUE SATURATIONScan Pipeline: ScanTask · scan.direct · reward.events · apply_async · gevent · scan.vision · scan.rule · scan.answer · scan.reward · CELERY CHAIN · RewardStep · item_class_list.yaml · situation_tags.yaml · LITE RAG · JsonRegulationRetriever · PipelineStage · waste_rag · XADD · domain: worker-ai · pipeline_duration · vision_stage_durationChat Agent: ImageService · chat.process · AioPikaBroker · create_chat_graph · route_by_intent · MULTI-INTENT FANOUT · waste_rag · recyclable_price · collection_point · image_generation · aggregator · thread_id · SyncableRedisSaver · AsyncPostgresSaver · LANGSMITH_TRACING · regenerateEvent Bus: job_id · stream_url · PipelineStage · XADD · scan:events:{shard} · XREADGROUP · XACK · XAUTOCLAIM · PendingReclaimer · STATE KV · scan:state:{job_id} · sse:events:{shard} · SSEBroadcastManager · Last-Event-ID · scan_sse_connections_active · ServiceMonitor · traceparentCluster: NodePort · kubeadm init · kubeadm join · vxlanMode · BGPConfiguration · module "vpc" · worker_ai · nodeSelector · domain: worker-ai · NoSchedule · 24-NODE CLUSTERGitOps: external-dns · x-canary · dev-root · ApplicationSet · sync-wave · selfHeal · ignoreDifferences · argocd-image-updater · update-strategy: digest · write-back-method · targetRevision · ci-services.ymlAutoscaling: ignoreDifferences · ScaledObject · QueueLength · cooldownPeriod · pollingInterval · fallback · maxReplicaCount · stabilizationWindowSeconds · HorizontalPodAutoscaler · scan_sse_connections_active · prometheus-adapterObservability: 24-NODE CLUSTER · prometheus-adapter · FLUENT BIT · Elasticsearch · Kibana · kube-prometheus-stack · AlertmanagerConfig · ServiceMonitor · JAEGER · OPENTELEMETRY · traceparent · kiali-server · LANGSMITH_TRACINGLoad Test: k6 · ramping-vus · thresholds · pipeline_duration · vision_stage_duration · poll_timeout · inspect ping · WORKER RESTART · POLLING TIMEOUT · QUEUE SATURATIONEvaluation: EvalConfig · eval_mode · eval_sample_rate · eval_cost_budget_daily_usd · EvalResult · EvalGrade · code_grader · llm_grader · CUSUM · regenerate · OpenAIBARSEvaluator

Hvordan de 24 nodene faktisk henger sammen, én flyt om gangen.

Selvdriftet Kubernetes bygget med kubeadm. Kartet plasserer de 24 fysiske nodene og arbeidslastene på dem innenfor README-ens fem lag og tegner de faktiske forbindelsene mellom dem. Når en flyt velges, fremheves bare den stien, med nummererte steg.

Den identifiserer avfall ut fra et bilde og forklarer hvordan det skal kastes, og i samtalen kaller den verktøy for steder, vær, gjenvinningspriser og nettsøk og genererer bilder. I dette teamprosjektet begynte jeg med grunnlaget for klynge og utrulling og utvidet ansvaret mitt til domenebackend, asynkron behandling, samtaleagenten og verifisering.

Fra utviklingen til konkurransen til styrking av backend og drift

Tjenesten er avsluttet; en innspilt demo og den tekniske rapporten viser den i bruk.

Klyngens forbindelseskart · tegnet på nytt ut fra manifester og kode ved commit a072127
Forbindelseskart for Eco²-klyngen · 24 noderEt kart over de 24 fysiske nodene innenfor README-ens fem lagbånd. Nettleseren slår bare opp navnet i Route 53; etter at TLS avsluttes ved ALB-en på 443, sender Istio ingress Envoy på en NodePort forespørselen til et domene-API. Scan API setter arbeidet i kø i RabbitMQ og returnerer straks en job_id; scan-worker i AI-poolen skriver framdriftshendelser til Redis Streams med XADD. Event Router leser dem, oppdaterer State KV og publiserer til Pub/Sub, og SSE Gateway sender dem til nettleseren. checkpoint-syncer lagrer Chat-checkpoints, og persistence consumer på Chat-noden lagrer meldinger i PostgreSQL. Platform Layer er ikke en forespørselssti; det konfigurerer, skalerer og observerer.NettleserHTTPS · SSEAWS ALB443 · TLS avsluttes herRoute 53DNSGitHub Actions · Docker Hubimage · manifest-revisjonLLM APIOpenAI · GoogleLangSmithsporing av LLM-kjøringerFluent BitDaemonSet · alle noderk8s-masterALB Controller · ExternalDNSArgo CD image updaterIstiodcontrol planek8s-ingress-gatewayIstio ingress Envoyk8s-api-scanScan APIk8s-api-chatChat APImessage consumerpersistence consumerk8s-api-authauth APIext-authzk8s-api-infoInfo APIinfo-workerk8s-api-charactercharacter APIk8s-api-imageimages APIk8s-api-usersusers APIk8s-api-locationlocation APIk8s-sse-gatewaySSE Gatewayk8s-event-routerEvent Routerk8s-rabbitmqRabbitMQk8s-worker-aik8s-worker-ai-2k8s-worker-storagek8s-worker-storage-2k8s-redis-pubsubPub/Subk8s-redis-streamsStreamsState KVk8s-redis-cacheCachek8s-postgresqlPostgreSQLk8s-redis-authblacklistk8s-monitoringKEDAPrometheusGrafanaAlertmanagerk8s-loggingElasticsearchKibanascan-workerchat-workercheckpoint-syncerauth-relayauth-workerusers-workercharacter-workercharacter-match-workerKialiJaeger · dev in-memoryKubernetes-klynge24 noder · kubeadmEdge Layer1 nodeService Layer8 noder · Envoy-sidecarIntegration Layer7 noderPersistence Layer5 noderPlatform Layer3 noder · konfigurere · skalere · observereAWS-administrertAI-pooldomain: worker-aistorage-pooldomain: worker-storageIngen fastlåst node1DNS-oppslag2 HTTPS 443 · Nettleser → AWS ALB23HTTP · NodePort4VirtualService5Celery-oppgave6 consume · RabbitMQ → scan-worker67 HTTPS · AI-pool → LLM API78XADD scan:events9XREADGROUP10SETEX state11PUBLISH12SUBSCRIBE13SSE-strøm14Gjenoppretting ved ny tilkobling1 HTTPS 443 · Nettleser → AWS ALB12HTTP · NodePort3VirtualService4Taskiq-oppgave5 consume · RabbitMQ → chat-worker56 HTTPS · AI-pool → LLM API67XADD chat:events8XREADGROUP9PUBLISH10SUBSCRIBE11SSE-strøm12checkpoint13les checkpoint14synkroniser til PostgreSQL15chat-persistence group16lagre meldinger1DNS-oppslag2 HTTPS 443 · Nettleser → AWS ALB23HTTP · NodePort4ext-authz · gRPC 500515blacklist-oppslag6VirtualService7gRPC8gRPC1outbox:blacklist2blacklist.events3 blacklist.events · RabbitMQ → auth-worker34lagre blacklist5 Celery batch · RabbitMQ → users-worker56UPSERT1image · manifest-revisjon2Ingress → ALB · DNS-poster3xDS-konfigurasjon4antall pods5 antall pods · KEDA → storage-pool56logger7 sporing av LLM-kjøringer · AI-pool → LangSmith7

Scan-forespørsel → levering i sanntid

En forespørsel om bildeanalyse blir arbeid i kø, og framdriftshendelsene kommer tilbake til samme nettleser.

  1. NettleserDNS-oppslag: DNS-oppslagRoute 53

    Bare navnet slås opp i Route 53-poster. Forespørsler går ikke gjennom DNS.

  2. Nettleserdataflyt: HTTPS 443AWS ALB

    TLS avsluttes ved ALB-en.

  3. AWS ALBdataflyt: HTTP · NodePortIstio ingress Envoyk8s-ingress-gateway

    Overleveres til Istio ingress Envoy via NodePort på EC2-instansmålet.

  4. Istio ingress Envoyk8s-ingress-gatewaydataflyt: VirtualServiceScan APIk8s-api-scan

    Rutes til Scan API, som setter arbeidet i kø og straks returnerer en job_id; polling etter resultatet besvares med 202 til jobben er ferdig.

  5. Scan APIk8s-api-scandataflyt: Celery-oppgaveRabbitMQk8s-rabbitmq

    Scan-oppgaven legges på RabbitMQ.

  6. RabbitMQk8s-rabbitmqdataflyt: consumescan-workerk8s-worker-ai · k8s-worker-ai-2

    scan-worker (Celery · gevent) i AI-poolen tar den og kjører Vision → Rule → Answer → Reward. De fire stadiene er kjedede Celery-tasks, ikke noder.

  7. AI-poolk8s-worker-ai · k8s-worker-ai-2dataflyt: HTTPSLLM API

    Scan- og chat-workerne kaller API-ene til OpenAI og Google.

  8. scan-workerk8s-worker-ai · k8s-worker-ai-2dataflyt: XADD scan:eventsStreamsk8s-redis-streams

    Framdriftshendelser skrives til én av fire Streams-shards.

  9. Streamsk8s-redis-streamsdataflyt: XREADGROUPEvent Routerk8s-event-router

    Event Router leser dem som consumer group og sender XACK etter behandlingen; pending og reclaim holder leveringen at-least-once.

  10. Event Routerk8s-event-routerdataflyt: SETEX stateState KVk8s-redis-streams

    Den skriver den siste tilstanden og en markering mot dobbeltbehandling til State KV på samme Redis-node.

  11. Event Routerk8s-event-routerdataflyt: PUBLISHPub/Subk8s-redis-pubsub

    Leveres i sanntid på jobbens kanal i shard Pub/Sub.

  12. Pub/Subk8s-redis-pubsubdataflyt: SUBSCRIBESSE Gatewayk8s-sse-gateway

    SSE Gateway abonnerer gjennom én delt listener per prosess og fordeler til hver tilkoblede nettleser.

  13. SSE Gatewayk8s-sse-gatewaydataflyt: SSE-strømNettleser

    En tilkobling åpnet over samme ALB- og ingress-sti. Leveringen er at-least-once; duplikater håndteres idempotent.

  14. State KVk8s-redis-streamsdataflyt: Gjenoppretting ved ny tilkoblingSSE Gatewayk8s-sse-gateway

    Ved ny tilkobling med Last-Event-ID fyller State KV og de bevarte Streams inn hendelser som ble gått glipp av.

Chat · tokens og lagring

Chat-tokens følger samme hendelsessti som Scan; checkpoints og meldinger lagres av to ulike arbeidslaster.

  1. Nettleserdataflyt: HTTPS 443AWS ALB

    TLS avsluttes ved ALB-en.

  2. AWS ALBdataflyt: HTTP · NodePortIstio ingress Envoyk8s-ingress-gateway

    Overleveres til Istio ingress Envoy via NodePort på EC2-instansmålet.

  3. Istio ingress Envoyk8s-ingress-gatewaydataflyt: VirtualServiceChat APIk8s-api-chat

    Rutes til Chat API.

  4. Chat APIk8s-api-chatdataflyt: Taskiq-oppgaveRabbitMQk8s-rabbitmq

    Chat-oppgaven legges på RabbitMQ.

  5. RabbitMQk8s-rabbitmqdataflyt: consumechat-workerk8s-worker-ai · k8s-worker-ai-2

    chat-worker (Taskiq · asyncio) klassifiserer hensikten med LangGraph, kjører deretter vision ved behov, de valgte verktøyene, aggregatoren og et sammendrag ved behov, og svarer. Hver forespørsel kjører bare grenene den trenger.

  6. AI-poolk8s-worker-ai · k8s-worker-ai-2dataflyt: HTTPSLLM API

    Scan- og chat-workerne kaller API-ene til OpenAI og Google.

  7. chat-workerk8s-worker-ai · k8s-worker-ai-2dataflyt: XADD chat:eventsStreamsk8s-redis-streams

    Tokens og stage-hendelser skrives til fire Streams-shards; derfra er leveringsstien den samme som for Scan.

  8. Streamsk8s-redis-streamsdataflyt: XREADGROUPEvent Routerk8s-event-router

    Event Router leser dem som consumer group og sender XACK etter behandlingen; pending og reclaim holder leveringen at-least-once.

  9. Event Routerk8s-event-routerdataflyt: PUBLISHPub/Subk8s-redis-pubsub

    Leveres i sanntid på jobbens kanal i shard Pub/Sub.

  10. Pub/Subk8s-redis-pubsubdataflyt: SUBSCRIBESSE Gatewayk8s-sse-gateway

    SSE Gateway abonnerer gjennom én delt listener per prosess og fordeler til hver tilkoblede nettleser.

  11. SSE Gatewayk8s-sse-gatewaydataflyt: SSE-strømNettleser

    En tilkobling åpnet over samme ALB- og ingress-sti. Leveringen er at-least-once; duplikater håndteres idempotent.

  12. chat-workerk8s-worker-ai · k8s-worker-ai-2dataflyt: checkpointCachek8s-redis-cache

    LangGraph-checkpointet ligger i Redis Cache.

  13. Cachek8s-redis-cachedataflyt: les checkpointcheckpoint-syncerk8s-worker-ai · k8s-worker-ai-2

    checkpoint-syncer leser checkpointet fra Redis.

  14. checkpoint-syncerk8s-worker-ai · k8s-worker-ai-2dataflyt: synkroniser til PostgreSQLPostgreSQLk8s-postgresql

    AsyncPostgresSaver lagrer det asynkront i PostgreSQL.

  15. Streamsk8s-redis-streamsdataflyt: chat-persistence grouppersistence consumerk8s-api-chat

    persistence consumer på Chat-noden leser done-hendelser som consumer group.

  16. persistence consumerk8s-api-chatdataflyt: lagre meldingerPostgreSQLk8s-postgresql

    Chatmeldinger lagres i PostgreSQL. Dette er en annen arbeidslast enn checkpoint-syncer.

Inngang · autentisering

Den synkrone veien fra klyngens inngang til et domene-API. Bare policybeskyttede stier sjekker autentisering først; pod-trafikk mellom noder går over Calico VXLAN.

  1. NettleserDNS-oppslag: DNS-oppslagRoute 53

    Bare navnet slås opp i Route 53-poster. Forespørsler går ikke gjennom DNS.

  2. Nettleserdataflyt: HTTPS 443AWS ALB

    TLS avsluttes ved ALB-en.

  3. AWS ALBdataflyt: HTTP · NodePortIstio ingress Envoyk8s-ingress-gateway

    Overleveres til Istio ingress Envoy via NodePort på EC2-instansmålet.

  4. Istio ingress Envoyk8s-ingress-gatewaydataflyt: ext-authz · gRPC 50051ext-authzk8s-api-auth

    Bare stier under en CUSTOM-policy spør først Go ext-authz (tidsavbrudd 2 s, failOpen false). Stier som login, health og docs er unntatt.

  5. ext-authzk8s-api-authdataflyt: blacklist-oppslagblacklistk8s-redis-auth

    Tokenet kontrolleres mot Redis-blacklisten.

  6. Istio ingress Envoyk8s-ingress-gatewaydataflyt: VirtualServiceChat APIk8s-api-chat

    Rutes til Chat API.

  7. Chat APIk8s-api-chatdataflyt: gRPCimages APIk8s-api-image

    Det synkrone kallet chat → images som README nevner.

  8. auth APIk8s-api-authdataflyt: gRPCusers APIk8s-api-users

    Det synkrone kallet auth → users som README nevner.

Storage-pool · asynkrone skrivinger

Blacklisten for autentisering og eierskap til figurer lagres av workers i storage-poolen, som henter arbeidet sitt fra RabbitMQ.

  1. blacklistk8s-redis-authdataflyt: outbox:blacklistauth-relayk8s-worker-storage · k8s-worker-storage-2

    auth-relay (auth-Bus i README) leser Redis-outboxen.

  2. auth-relayk8s-worker-storage · k8s-worker-storage-2dataflyt: blacklist.eventsRabbitMQk8s-rabbitmq

    Den publiserer på nytt til RabbitMQ, med nye forsøk og en DLQ.

  3. RabbitMQk8s-rabbitmqdataflyt: blacklist.eventsauth-workerk8s-worker-storage · k8s-worker-storage-2

    auth-worker mottar blacklist-hendelsene.

  4. auth-workerk8s-worker-storage · k8s-worker-storage-2dataflyt: lagre blacklistblacklistk8s-redis-auth

    De lagres i Redis-blacklisten.

  5. RabbitMQk8s-rabbitmqdataflyt: Celery batchusers-workerk8s-worker-storage · k8s-worker-storage-2

    users-worker mottar arbeid om eierskap til figurer i batcher.

  6. users-workerk8s-worker-storage · k8s-worker-storage-2dataflyt: UPSERTPostgreSQLk8s-postgresql

    Det skrives til PostgreSQL.

Konfigurere · skalere · observere

Platform Layer er ikke et steg forespørsler går gjennom; det ruller ut, konfigurerer, skalerer og observerer de andre lagene. Nodene er EC2-instanser laget med Terraform, med kubeadm og Calico installert av Ansible; CI validerer bare Terraform og kjører aldri apply automatisk.

  1. GitHub Actions · Docker Hubkonfigurasjon · skalering: image · manifest-revisjonArgo CD image updaterk8s-master

    Argo CD bringer klyngens konfigurasjon i samsvar via App-of-Apps og Sync Waves. Bare image updaterens plassering på control plane ble bekreftet.

  2. ALB Controller · ExternalDNSk8s-masterkonfigurasjon · skalering: Ingress → ALB · DNS-posterAWS-administrert

    ALB Controller og ExternalDNS konfigurerer ressurser på AWS-siden. Dette er ikke en sti forespørsler tar.

  3. Istiodk8s-masterkonfigurasjon · skalering: xDS-konfigurasjonIstio ingress Envoyk8s-ingress-gateway

    Istiod sender Gateway-, VirtualService- og EnvoyFilter-konfigurasjonen via xDS til ingress Envoy og til Envoy-sidecaren for hvert API.

  4. KEDAk8s-monitoringkonfigurasjon · skalering: antall podsAI-poolk8s-worker-ai · k8s-worker-ai-2

    KEDA justerer antallet worker-pods. Antallet noder endres ikke.

  5. KEDAk8s-monitoringkonfigurasjon · skalering: antall podsstorage-poolk8s-worker-storage · k8s-worker-storage-2

    Worker-pods i storage-poolen skaleres på samme måte.

  6. Fluent Bitobserverbarhet: loggerElasticsearchk8s-logging

    Fluent Bit er et DaemonSet på alle noder og sender logger til Elasticsearch.

  7. AI-poolk8s-worker-ai · k8s-worker-ai-2observerbarhet: sporing av LLM-kjøringerLangSmith

    Traces av LLM-kall sendes til LangSmith, en ekstern SaaS.

Alle forbindelser med samme tykkelse. Velg en flyt for å fremheve bare dens vei, med nummererte steg.

  • Heltrukket · retningen forespørsler, arbeid, hendelser og skrivinger flyter i
  • Prikket · DNS-oppslag; forespørsler går ikke gjennom det
  • Stiplet · konfigurasjon eller skalering; ikke en datavei
  • Lang strek-prikk · logger og sporing av kjøringer
  • Kraftig svart linje · den valgte flyten; tallene angir rekkefølgen
  • Boks · en fysisk node, vertsnavn i overskriften
  • Indre chip · en arbeidslast som kjører på noden
  • Stiplet ramme · en planleggingspool med to noder
  • Stiplet boks · utenfor klyngen, telles ikke som node
  • Oransje kontur · der en modell tar beslutninger
  • Control plane1 node
  • Domain API8 noder
  • AI-pool2 noder
  • storage-pool2 noder
  • Data5 noder
  • Platform6 noder

README-ens fem lag (båndene) og de fysiske gruppene (fargen i hver nodes overskrift) grupperer de samme 24 nodene ulikt. State KV deler Streams-noden og telles ikke separat; Route 53, ALB-en og tjenester utenfor klyngen er ikke noder. En pool er et planleggingsområde, ikke en påstand om at hver pod kjører på begge nodene.

Oppsett med 24 noder · ut fra nodelisten i dashbordet fra 21. januar 2026

24noder

24 = 1 control plane + 8 API + 4 worker + 5 data + 6 platform

  1. 1Control plane

    role: control-plane

    kube-apiserver · scheduler · controller-manager · etcd samt plattformens controllere.

    1. k8s-master
  2. 8Domain API

    domain: <tjeneste>

    Én node per domene. Interne kall bruker gRPC.

    1. k8s-api-auth
    2. k8s-api-users
    3. k8s-api-scan
    4. k8s-api-character
    5. k8s-api-location
    6. k8s-api-image
    7. k8s-api-chat
    8. k8s-api-info
  3. 4Execution worker

    To planleggingspooler med to noder hver. KEDA endrer antallet pods; antallet noder forblir det samme.

    storage-pooldomain: worker-storage
    1. k8s-worker-storage
    2. k8s-worker-storage-2
    AI-pooldomain: worker-ai
    1. k8s-worker-ai
    2. k8s-worker-ai-2
  4. 5Data

    Redis er fordelt på fire noder etter formål. PostgreSQL-lagringen er EBS CSI · gp3.

    1. k8s-postgresql
    2. k8s-redis-auth
    3. k8s-redis-streams
    4. k8s-redis-cache
    5. k8s-redis-pubsub
  5. 6Platform

    Meldinger, observerbarhet, ingress og levering i sanntid har hver sin node.

    1. k8s-rabbitmq
    2. k8s-monitoring
    3. k8s-logging
    4. k8s-ingress-gateway
    5. k8s-sse-gateway
    6. k8s-event-router
Alle noder
  • Fluent Bit · DaemonSet
  • Calico

Konfigurerte modeller · per leverandør

Tjenesten er lagt ned, så dette er modellene som er konfigurert i repositoryet, ikke valg som finnes i dag. Hver rolle står for seg; dette er ikke en liste over verifiserte kjøringer.

  • OpenAI

    Standardleverandør for Chat

    Chat

    • openai/gpt-5.2standard

    Standardmodellen er gpt-5.2; en modell som oppgis i forespørselen, brukes i stedet.

    Scan

    • gpt-5.2standard
    • gpt-5.2-pro
    • gpt-5.1
    • gpt-5
    • gpt-5-pro
    • gpt-5-mini

    Modeller utenfor tilordningen med 13 modeller avvises.

    Bildetilordning

    • gpt-image-1.5

    Atskilt fra gpt-5.2, som er orkestreringsmodellen for Responses. Bildegenerering er slått av som standard.

    Evaluering

    • gpt-4o-ministandard

    LLM-graderen for evaluering av samtaler, atskilt fra Chat-modellen.

  • Google

    Når Chat velger Google

    Chat

    • google/gemini-3-pro-preview
    • google/gemini-3-flash-preview

    Når Google er valgt, er gemini-3-flash-preview standard.

    Scan

    • gemini-3-pro-preview
    • gemini-3-flash-preview
    • gemini-2.5-pro
    • gemini-2.5-flash
    • gemini-2.5-flash-lite
    • gemini-2.0-flash
    • gemini-2.0-flash-lite

    Bildetilordning

    • gemini-3-pro-image-preview