Olá, tive um problema de dependência com "chatService" e "'vectorStore" do SpringAI neste mesmo caso, só que rodando o projeto localmente na minha máquina. A Rafaela Petelin Silvério, me ajudou a descobrir que o problema era a versão antiga do Cassandra.
Aí, após atualizar a versão do Cassandra e incluir o parâmetro de configuração "spring.ai.vectorstore.cassandra.initialize-schema=true" no application.properties, o projeto funcionou normalmente. Esse parâmetro é o que faz o SpringBoot carregar as dependências do SpringAI e permitir que o keyspace e a tabela padrão sejam criados no Cassandra Vector.
Agora, estou com problemas em executar este mesmo projeto em Containers Docker através do Docker Compose.
Estou criando um container para o MySQL, outro para o Cassandra e outro para a Aplicação, conforme os arquivos mais abaixo.
Os três containers "sobem" normalmente e consigo interagir através do docker tanto com o MySQL quanto com o Cassandra.
Novamente: o projeto funciona corretamente localmente. Porém quando executo "docker compose up --build" aparece o erro de dependência:
Error creating bean with name 'chatService': Unsatisfied dependency expressed through field 'reader': e UnsatisfiedDependencyException: Error creating bean with name 'vectorStore'
Acredito que o problema seja de algum parâmetro/variável de configuração. Desde já, Obrigado!
*** Arquivos:
docker-compose.yml
services: cassandra: image: cassandra:5.0 container_name: cassandra ports:
- "9042:9042" networks:
- apv-bridge volumes:
- cassandra-data:/var/lib/cassandra
mysql: image: mysql:8.0.36 container_name: mysql #env_file: ./env/mysql.env environment: MYSQL_ALLOW_EMPTY_PASSWORD: 1 MYSQL_DATABASE: assistente
MYSQL_USER: usr
MYSQL_PASSWORD: pwd
networks:
- apv-bridge volumes: - ./mysql-data:/var/lib/mysql restart: always depends_on:
- cassandra
app: container_name: app build: context: . env_file: ./env/app.env restart: always ports:
- 8080:8080 environment: SPRING_AI_CASSANDRA_VECTOR_INITIALIZE_SCHEMA: true SPRING_DATA_CASSANDRA_KEYSPACE_NAME: springframework SPRING_AI_VECTORSTORE_CASSANDRA_TABLE: ai_vector_store SPRING_CASSANDRA_LOCAL_DATACENTER: datacenter1 SPRING_DATA_CASSANDRA_CONTACT_POINTS: cassandra SPRING_DATA_CASSANDRA_PORT: 9042
depends_on:
- cassandra networks:
- apv-bridge
volumes: mysql-data: cassandra-data:
networks: apv-bridge: driver: bridge
Arquivo app.env:
SPRING_PROFILES_ACTIVE=prod SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/assistente?createDatabaseIfNotExist=true SPRING_DATASOURCE_USERNAME=root SPRING_DATASOURCE_PASSWORD=
SPRING_CASSANDRA_CONTACT_POINTS: cassandra SPRING_CASSANDRA_LOCAL_DATACENTER: datacenter1 SPRING_AI_CASSANDRA_VECTOR_INITIALIZE_SCHEMA: true
Arquivo application-prod.properties:
spring.application.name=apv
spring.datasource.url=${DATASOURCE_URL} spring.datasource.username=${DATASOURCE_USERNAME} spring.datasource.password=${DATASOURCE_PASSWORD} spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.show-sql: false spring.jpa.hibernate.ddl-auto=update
spring.ai.vectorstore.cassandra.initialize-schema=true spring.cassandra.local-datacenter=datacenter1 spring.cassandra.contact-points=cassandra
spring.ai.openai.api-key=${OPENAI_API_KEY} spring.ai.openai.chat.api-key=${OPENAI_API_KEY} spring.ai.openai.chat.options.temperature=0.4