Coder Social home page Coder Social logo

moyangzhan / langchain4j-aideepin Goto Github PK

View Code? Open in Web Editor NEW
237.0 5.0 66.0 14.59 MB

JAVA版本的检索增强生成(RAG)项目,包括知识库、搜索 | JAVA version of retrieval enhancement generation(RAG) project ,including knowledge base, search

Home Page: http://www.aideepin.com

License: MIT License

Java 99.88% Dockerfile 0.12%
ai-search knowlege-base langchain4j rag

langchain4j-aideepin's Introduction

Getting Started

READ THIS IN ENGLISH

LangChain4j-AIDeepin 基于 ChatGPT 等大语言模型与 Langchain4j 等应用框架实现,开源、可离线部署的检索增强生成(RAG)项目。

该项目如对您有帮助,欢迎点赞

代码仓库地址:github gitee

前端项目:

体验网址

http://www.aideepin.com

功能点

  • 注册&登录
  • 多会话(多角色)
  • 图片生成(文生图、修图、图生图)
  • 提示词
  • 额度控制
  • 基于大模型的知识库(RAG)
  • 基于大模型的搜索(RAG)
  • 多模型随意切换
  • 多搜索引擎随意切换

接入的模型:

  • ChatGPT 3.5
  • 通义千问
  • 文心一言
  • ollama
  • DALL-E 2

接入的搜索引擎

Google

Bing (TODO)

百度 (TODO)

技术栈

该仓库为后端服务

技术栈:

前端技术栈:

  • vue3
  • vite
  • typescript
  • pnpm
  • pinia
  • naiveui

如何部署

初始化

a. 初始化数据库

  • 创建数据库aideepin

  • 执行docs/create.sql

  • 配置模型(至少设置一个) 或者 使用管理端在界面上配置

    • 配置AI平台
      -- openai的secretKey
      update adi_sys_config set value = '{"secret_key":"my_openai_secret_key"}' where name = 'openai_setting';
      
      -- 灵积大模型平台的apiKey
      update adi_sys_config set value = '{"api_key":"my_dashcope_api_key"}' where name = 'dashscope_setting';
      
      -- 千帆大模型平台的配置
      update adi_sys_config set value = '{"api_key":"my_qianfan_api_key","secret_key":"my_qianfan_secret_key"}' where name = 'qianfan_setting';
      
      -- ollama的配置
      update adi_sys_config set value = '{"base_url":"my_ollama_base_url"}' where name = 'ollama_setting';
      
    • 启用AI平台下的模型或新增模型
      -- Enable model
      update adi_ai_model set is_enable = true where name = 'gpt-3.5-turbo';
      update adi_ai_model set is_enable = true where name = 'dall-e-2';
      update adi_ai_model set is_enable = true where name = 'qwen-turbo';
      update adi_ai_model set is_enable = true where name = 'ernie_speed';
      update adi_ai_model set is_enable = true where name = 'tinydolphin';
      
      -- Add new model
      INSERT INTO adi_ai_model (name, type, platform, is_enable) VALUES ('vicuna', 'text', 'ollama', true);
      
  • 填充搜索引擎的配置

    • Google的配置
      update adi_sys_config set value = '{"url":"https://www.googleapis.com/customsearch/v1","key":"my key from cloud.google.com","cx":"my cx from programmablesearchengine.google.com"}' where name = 'google_setting';
      

b. 修改配置文件

  • postgresql: application-[dev|prod].xml中的spring.datasource
  • redis: application-[dev|prod].xml中的spring.data.redis
  • mail: application.xml中的spring.mail

编译及运行

  • 进入项目

    cd langchain4j-aideepin
    
  • 打包:

    mvn clean package -Dmaven.test.skip=true
    
  • 运行

    • jar包启动:
    cd adi-bootstrap/target
    nohup java -jar -Xms768m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError adi-bootstrap-0.0.1-SNAPSHOT.jar --spring.profiles.active=[dev|prod] dev/null 2>&1 &
    
    • docker启动
    cd adi-bootstrap
    docker build . -t aideepin:0.0.1
    docker run -d \
      --name=aideepin \
      -e APP_PROFILE=[dev|prod] \
      -v="/data/aideepin/logs:/data/logs" \
      aideepin:0.0.1
    

待办:

  • 高级RAG
    • 查询压缩 √
    • 查询路由
    • Re-rank:支持本地rerank模型
  • 图片模型:
    • 接入DALL-E 3 √
    • 画廊视图 √
  • 知识库:
    • 文档召回数量可设置
      • 自动调整(根据LLM的上下文窗口大小) √
      • 手动调整 √
    • 文档召回最低分数可设置 √
    • 切块时内容重叠数量可设置 √
    • 请求模型时temperature可设置 √
    • 答案来源 √
    • 支持拉取在线文档
    • FAQ
    • 评论
  • 多模态支持
  • 工具
    • FAQ提取
    • 文档对话
    • 翻译
  • 搜索引擎
    • Google √
    • Bing
    • 百度

截图

AI聊天: 1691583184761

AI画图:

1691583124744

知识库: kbindex

kb01

向量化:

kb02

kb03

额度统计:

!1691583329105.png

langchain4j-aideepin's People

Contributors

moyangzhan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

langchain4j-aideepin's Issues

功能优化

知识库问答是否考虑增加原文引用,类似FastGPT中相关内容

使用ERNIE-Speed-8K聊天界面返回 系统提示:Invalid content-type: application/json

在用户端聊天界面,使用ERNIE-Speed-8K,发送文字,后台日志如下:
2024-07-25 19:49:42.009 INFO [mainExecutor-2] com.moyz.adi.common.service.ConversationMessageService asyncCheckAndPushToClient,userId:1
2024-07-25 19:49:42.016 INFO [mainExecutor-2] com.moyz.adi.common.interfaces.AbstractLLMService sseChat,messageId:05d226f8b8f44e3888e14e4f717c85e0
2024-07-25 19:49:42.669 ERROR [OkHttp https://aip.baidubce.com/...] com.moyz.adi.common.interfaces.AbstractLLMService stream error

java.lang.IllegalStateException: Invalid content-type: application/json
at okhttp3.internal.sse.RealEventSource.processResponse(RealEventSource.kt:60)
at okhttp3.internal.sse.RealEventSource.onResponse(RealEventSource.kt:46)
at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)

2024-07-25 19:49:42.671 INFO [http-nio-9999-exec-10] com.moyz.adi.common.helper.SSEEmitterHelper response complete,uid:1

2024-07-25 19:55:23.654 INFO [mainExecutor-2] com.moyz.adi.common.service.ConversationMessageService asyncCheckAndPushToClient,userId:1
2024-07-25 19:55:23.660 INFO [mainExecutor-2] com.moyz.adi.common.interfaces.AbstractLLMService sseChat,messageId:05d226f8b8f44e3888e14e4f717c85e0
2024-07-25 19:55:23.967 ERROR [OkHttp https://aip.baidubce.com/...] com.moyz.adi.common.interfaces.AbstractLLMService stream error

java.lang.IllegalStateException: Invalid content-type: application/json
at okhttp3.internal.sse.RealEventSource.processResponse(RealEventSource.kt:60)
at okhttp3.internal.sse.RealEventSource.onResponse(RealEventSource.kt:46)
at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)

2024-07-25 19:55:23.970 INFO [http-nio-9999-exec-4] com.moyz.adi.common.helper.SSEEmitterHelper response complete,uid:1

我发现qianfan的baseurl:aip.baidubce.com禁止访问,不确定是不是和这个有关系。
微信图片_20240725195816
还是说下面这个接口里面的功能有问题:
微信图片_20240725195951

微信图片_20240725200002

用百度模型ernie speed提示下面错误

2024-07-17 17:08:07.648 ERROR [OkHttp https://aip.baidubce.com/...] com.moyz.adi.common.interfaces.AbstractLLMService stream error

java.lang.IllegalStateException: Invalid content-type: application/json
at okhttp3.internal.sse.RealEventSource.processResponse(RealEventSource.kt:60)
at okhttp3.internal.sse.RealEventSource.onResponse(RealEventSource.kt:46)
at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)

如果开启上下文理解,无论选择哪个模型都会出现下面的问题

2024-07-18 18:56:03.686 INFO [http-nio-9999-exec-5] com.moyz.adi.common.base.ResponseWrapper result:true
2024-07-18 18:56:10.223 INFO [mainExecutor-2] com.moyz.adi.common.service.ConversationMessageService asyncCheckAndPushToClient,userId:2
2024-07-18 18:56:10.311 INFO [mainExecutor-2] com.moyz.adi.common.interfaces.AbstractLLMService sseChat,messageId:afd192893aab4ab4a6e4cf4153cc0e08
2024-07-18 18:56:10.321 INFO [mainExecutor-2] com.moyz.adi.common.util.MapDBChatMemoryStore chat memory path:D:/data/chat_memory/
2024-07-18 18:56:10.333 ERROR [mainExecutor-2] org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler Unexpected exception occurred invoking async method: public void com.moyz.adi.common.service.ConversationMessageService.asyncCheckAndPushToClient(org.springframework.web.servlet.mvc.method.annotation.SseEmitter,com.moyz.adi.common.entity.User,com.moyz.adi.common.dto.AskReq)

java.lang.NoClassDefFoundError: kotlin/enums/EnumEntriesKt
at org.mapdb.DBMaker$StoreType.(DBMaker.kt:35)
at org.mapdb.DBMaker.fileDB(DBMaker.kt:50)
at com.moyz.adi.common.util.MapDBChatMemoryStore.(MapDBChatMemoryStore.java:31)

千帆模型不可用

作者在引用千帆模型时是否有Invalid content-type: application/json 的报错?

关于RAG实现

我可以基于该项目结合本地模型(例如ollama),将向量数据提供给模型作为知识使用吗。 而不是使用openkey调用在线的模型问答

仍旧是激活邮件发送问题

重新改了一下有些配置..为什么在本地运行时注册激活邮件发到了作者的体验网站这里?一直显示激活码失效。
image
~MZ }W NVWUT (D2GQH }HL

配置文件所有端口都没改过,只填了邮件,数据库等配置,前端项目是按照readme给的docker启动的,命令一致。因为是win系统,后端项目是打包后直接启动的adi-bootstrap-0.0.1-SNAPSHOT.jar

知识库上传,没有上传成功

2024-07-18 21:30:26.793 INFO [http-nio-9999-exec-4] com.moyz.adi.common.base.ResponseWrapper result:com.baomidou.mybatisplus.extension.plugins.pagination.Page@85b93a6
2024-07-18 21:31:00.254 ERROR [http-nio-9999-exec-9] com.moyz.adi.common.service.KnowledgeBaseService upload error

java.lang.IllegalArgumentException: 'D:\data\images\8e95ed67100a4d8d926314f403d42912.txt' is not a file
local:
files: D:/data/files/
images: D:/data/images/
tmp-images: D:/data/tmp_images/
chat-memory: D:/data/chat_memory/
这些配置都有的,错误在下面行
at dev.langchain4j.internal.Exceptions.illegalArgument(Exceptions.java:19)
at dev.langchain4j.data.document.loader.FileSystemDocumentLoader.loadDocument(FileSystemDocumentLoader.java:52)
at dev.langchain4j.data.document.loader.FileSystemDocumentLoader.loadDocument(FileSystemDocumentLoader.java:88)

聊天页有BUG

(1)创建new chat时新建的new chat会自动消失,需要重新点击
(2)当创建出来的new chat后,再点其他的聊天,新的会消失
(3)打开页面后,点击非首个聊天,会自动弹到第一个,需要重新点击其他聊天才能正常

跨域问题

作者你线上环境是用nginx吗?跨域怎么配置的,需要修改哪些地方?我打包前端后除了登录方法其他失效了,是否可以贴一下配置信息

使用ERNIE-Speed-8K,报错

调用/process/{kbUuid}方法,报这个错误,尝试把baidu的credits加载到本地,还是不行。 能留个联系方式请教下吗

java.lang.RuntimeException: java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at dev.langchain4j.internal.RetryUtils$RetryPolicy.withRetry(RetryUtils.java:195)
at dev.langchain4j.internal.RetryUtils.withRetry(RetryUtils.java:229)
at dev.langchain4j.model.qianfan.QianfanChatModel.generate(QianfanChatModel.java:128)
at dev.langchain4j.model.qianfan.QianfanChatModel.generate(QianfanChatModel.java:90)
at dev.langchain4j.model.chat.ChatLanguageModel.generate(ChatLanguageModel.java:39)
at dev.langchain4j.model.chat.ChatLanguageModel.generate(ChatLanguageModel.java:27)
at dev.langchain4j.rag.query.transformer.CompressingQueryTransformer.transform(CompressingQueryTransformer.java:74)
at dev.langchain4j.rag.DefaultRetrievalAugmentor.augment(DefaultRetrievalAugmentor.java:141)
at dev.langchain4j.service.DefaultAiServices$1.invoke(DefaultAiServices.java:103)
at jdk.proxy2/jdk.proxy2.$Proxy174.chatWithoutSystemMessage(Unknown Source)
at com.moyz.adi.common.interfaces.AbstractLLMService.ragChat(AbstractLLMService.java:125)
at com.moyz.adi.common.helper.SSEEmitterHelper.ragProcess(SSEEmitterHelper.java:97)
at com.moyz.adi.common.service.KnowledgeBaseService.retrieveAndPushToLLM(KnowledgeBaseService.java:372)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:842)
Caused by: java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at dev.langchain4j.model.qianfan.client.SyncRequestExecutor.execute(SyncRequestExecutor.java:32)
at dev.langchain4j.model.qianfan.client.RequestExecutor.execute(RequestExecutor.java:64)
at dev.langchain4j.model.qianfan.client.QianfanClient.refreshToken(QianfanClient.java:140)
at dev.langchain4j.model.qianfan.client.QianfanClient.chatCompletion(QianfanClient.java:98)
at dev.langchain4j.model.qianfan.QianfanChatModel.lambda$generate$0(QianfanChatModel.java:128)
at dev.langchain4j.internal.RetryUtils$RetryPolicy.withRetry(RetryUtils.java:192)
... 26 common frames omitted
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:378)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:321)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:316)
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1351)
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1226)
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1169)
at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396)
at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480)
at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:458)
at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:201)
at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:172)
at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1506)
at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1421)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:455)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:426)
at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.kt:379)
at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.kt:337)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:209)
at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:226)
at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106)
at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74)
at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at dev.langchain4j.model.qianfan.client.ResponseLoggingInterceptor.intercept(ResponseLoggingInterceptor.java:19)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at dev.langchain4j.model.qianfan.client.RequestLoggingInterceptor.intercept(RequestLoggingInterceptor.java:27)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at dev.langchain4j.model.qianfan.client.AuthorizationHeaderInjector.intercept(AuthorizationHeaderInjector.java:18)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:204)
at dev.langchain4j.model.qianfan.client.SyncRequestExecutor.execute(SyncRequestExecutor.java:24)
... 31 common frames omitted
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)
at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)
at java.base/sun.security.validator.Validator.validate(Validator.java:264)
at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:132)
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1335)
... 67 common frames omitted
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:148)
at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:129)
at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)
at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)
... 72 common frames omitted

后端代码启动时的问题

cd adi-bootstrap/target
该目录下没有adi-chat-0.0.1-SNAPSHOT.jar 文件,
nohup java -jar -Xms768m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError adi-chat-0.0.1-SNAPSHOT.jar --spring.profiles.active=[dev|prod] dev/null 2>&1 &
在adi-chat/target目录下执行上述命令控制台会返回“adi-chat-0.0.1-SNAPSHOT.jar中没有主清单属性”,且用readme的docker启动方法,在docker desktop下建立的容器也不能运行,显示“no main manifest attribute”,该如何解决?

windows中如何idea调试

-07-31 05:30:42.875 ERROR [main] org.springframework.boot.SpringApplication Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'knowledgeBaseController': Injection of resource dependencies failed
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:303)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1416)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:597)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:310)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293)
at com.moyz.adi.BootstrapApplication.main(BootstrapApplication.java:16)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'knowledgeBaseService': Injection of resource dependencies failed
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:303)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1416)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:597)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.resolveBeanByName(AbstractAutowireCapableBeanFactory.java:457)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:496)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:467)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:618)
at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:242)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:133)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:300)
... 17 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'kbRagService' defined in class path resource [com/moyz/adi/common/config/BeanConfig.class]: Failed to instantiate [com.moyz.adi.common.service.RAGService]: Factory method 'initKnowledgeBaseRAGService' threw exception with message: null
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:657)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:491)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1332)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1162)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:490)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:467)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:618)
at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:242)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:133)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:300)
... 31 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.moyz.adi.common.service.RAGService]: Factory method 'initKnowledgeBaseRAGService' threw exception with message: null
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:171)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
... 49 common frames omitted
Caused by: java.lang.ExceptionInInitializerError: null
at com.moyz.adi.common.service.RAGService.init(RAGService.java:50)
at com.moyz.adi.common.config.BeanConfig.initKnowledgeBaseRAGService(BeanConfig.java:123)
at com.moyz.adi.common.config.BeanConfig$$SpringCGLIB$$0.CGLIB$initKnowledgeBaseRAGService$3()
at com.moyz.adi.common.config.BeanConfig$$SpringCGLIB$$2.invoke()
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
at com.moyz.adi.common.config.BeanConfig$$SpringCGLIB$$0.initKnowledgeBaseRAGService()
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:139)
... 50 common frames omitted
Caused by: java.lang.RuntimeException: ai.djl.engine.EngineException: Failed to load Huggingface native library.
at dev.langchain4j.model.embedding.OnnxBertBiEncoder.(OnnxBertBiEncoder.java:42)
at dev.langchain4j.model.embedding.AbstractInProcessEmbeddingModel.loadFromJar(AbstractInProcessEmbeddingModel.java:20)
at dev.langchain4j.model.embedding.AllMiniLmL6V2EmbeddingModel.(AllMiniLmL6V2EmbeddingModel.java:18)
... 62 common frames omitted
Caused by: ai.djl.engine.EngineException: Failed to load Huggingface native library.
at ai.djl.huggingface.tokenizers.jni.LibUtils.(LibUtils.java:43)
at ai.djl.huggingface.tokenizers.HuggingFaceTokenizer.newInstance(HuggingFaceTokenizer.java:173)
at dev.langchain4j.model.embedding.OnnxBertBiEncoder.(OnnxBertBiEncoder.java:39)
... 64 common frames omitted
Caused by: java.lang.IllegalStateException: Cannot copy jni files
at ai.djl.huggingface.tokenizers.jni.LibUtils.copyJniLibraryFromClasspath(LibUtils.java:108)
at ai.djl.huggingface.tokenizers.jni.LibUtils.loadLibrary(LibUtils.java:66)
at ai.djl.huggingface.tokenizers.jni.LibUtils.(LibUtils.java:41)
... 66 common frames omitted
Caused by: java.nio.file.AccessDeniedException: C:\Users\MI.djl.ai\tokenizers\tmp16725462456359170362 -> C:\Users\MI.djl.ai\tokenizers\0.15.0-0.26.0-win-x86_64
at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
at java.base/sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:317)
at java.base/sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:293)
at java.base/java.nio.file.Files.move(Files.java:1432)
at ai.djl.util.Utils.moveQuietly(Utils.java:132)
at ai.djl.huggingface.tokenizers.jni.LibUtils.copyJniLibraryFromClasspath(LibUtils.java:105)
... 68 common frames omitted

无法启动后端,求指点!

错误栈:
SLF4J: Class path contains multiple SLF4J providers.
SLF4J: Found provider [ch.qos.logback.classic.spi.LogbackServiceProvider@55040f2f]
SLF4J: Found provider [org.slf4j.simple.SimpleServiceProvider@64c87930]
SLF4J: See https://www.slf4j.org/codes.html#multiple_bindings for an explanation.
20:12:53,777 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.4.6
20:12:53,796 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
20:12:53,796 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/D:/3.AILearning/%e6%af%94%e8%b5%9b%e4%bb%a3%e7%a0%81/langchain4j-aideepin/adi-bootstrap/target/classes/logback.xml]
20:12:53,857 |-INFO in ch.qos.logback.core.joran.action.ConversionRuleAction - registering conversion word clr with class [org.springframework.boot.logging.logback.ColorConverter]
20:12:53,857 |-INFO in ch.qos.logback.core.joran.action.ConversionRuleAction - registering conversion word wex with class [org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter]
20:12:53,857 |-INFO in ch.qos.logback.core.joran.action.ConversionRuleAction - registering conversion word wEx with class [org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter]
20:12:53,900 |-WARN in ch.qos.logback.core.model.processor.ImplicitModelHandler - Ignoring unknown property [springProperty] in [ch.qos.logback.classic.LoggerContext]
20:12:53,900 |-WARN in ch.qos.logback.core.model.processor.ImplicitModelHandler - Ignoring unknown property [springProperty] in [ch.qos.logback.classic.LoggerContext]
20:12:53,900 |-WARN in ch.qos.logback.core.model.processor.ImplicitModelHandler - Ignoring unknown property [springProperty] in [ch.qos.logback.classic.LoggerContext]
20:12:53,906 |-WARN in ch.qos.logback.core.model.processor.ImplicitModelHandler - Ignoring unknown property [springProfile] in [ch.qos.logback.classic.LoggerContext]
20:12:53,906 |-WARN in ch.qos.logback.core.model.processor.ImplicitModelHandler - Ignoring unknown property [springProfile] in [ch.qos.logback.classic.LoggerContext]
20:12:53,908 |-WARN in ch.qos.logback.core.model.processor.AppenderModelHandler - Appender named [StdoutAppender] not referenced. Skipping further processing.
20:12:53,908 |-WARN in ch.qos.logback.core.model.processor.AppenderModelHandler - Appender named [FileAppender] not referenced. Skipping further processing.
20:12:53,908 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@2beee7ff - End of configuration.
20:12:53,908 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@5136d012 - Registering current configuration as safe fallback point

SLF4J: Actual provider is of type [ch.qos.logback.classic.spi.LogbackServiceProvider@55040f2f]

Process finished with exit code 1
`

发送对话提示:conversation uuid error

请求体中conversationUuid的格式有问题,与正则不匹配导致
String uuidRegex = "^[0-9a-fA-F]{8}[0-9a-fA-F]{4}4[0-9a-fA-F]{3}[89abAB][0-9a-fA-F]{3}[0-9a-fA-F]{12}$";
//check conversation uuid
boolean isValid = Pattern.matches(uuidRegex, value.getConversationUuid());
:{"prompt":"ddd","conversationUuid":"default","regenerateQuestionUuid":"","modelName":"gpt-3.5-turbo"}

知识库上传文件始终失败

在本地尝试了好几遍,还是不能上传txt,pdf一类的文档,但是聊天功能正常。在作者的体验网址上可以正常上传文档,这是什么原因?是不是代码没有更新?
6324380de3eb4fa593c0ca0b35af677

e118fa7543e41f7e1eb0a6c8b3f8ec3

聊天提示 conversation uuid error

有个小问题:注册邮件发送失败,数据库数据未回滚;我手工修改了user表的状态,发送消息提示 conversation uuid error。
java.lang.IllegalArgumentException: conversation uuid error
at com.moyz.adi.common.validator.AskReqValidator.isValid(AskReqValidator.java:30)
at com.moyz.adi.common.validator.AskReqValidator.isValid(AskReqValidator.java:11)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateSingleConstraint(ConstraintTree.java:180)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.