Commit 708cbf9f authored by Wade's avatar Wade

split doc ok

parent 409192b5
{"level":"info","pid":16602,"time":1749295282,"caller":"/Users/wade/project/wuban/agentchat/log.go:68","message":"This message appears when log level set to Debug or Info"}
{"level":"info","pid":16602,"method":"DeepSeek.Init","time":1749295282,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:98","message":"Initializing DeepSeek plugin"}
{"level":"info","pid":16602,"method":"DeepSeek.DefineModel","model_name":"deepseek-chat","time":1749295282,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":16602,"method":"Deep lantern","model_name":"deepseek-chat","time":1749295282,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":16602,"method":"DeepSeek.DefineModel","model_name":"deepseek-coder","time":1749295282,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":16602,"method":"Deep lantern","model_name":"deepseek-coder","time":1749295282,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":16602,"method":"DeepSeek.DefineModel","model_name":"deepseek-reasoner","time":1749295282,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":16602,"method":"Deep lantern","model_name":"deepseek-reasoner","time":1749295282,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":16602,"method":"DeepSeek.Init","time":1749295282,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:123","message":"Initialization successful"}
{"level":"info","pid":16602,"method":"Milvus.Init","time":1749295282,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:75","message":"Initializing Milvus plugin"}
{"level":"info","pid":16602,"method":"Milvus.Init","time":1749295283,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:87","message":"Initialization successful"}
{"level":"info","pid":16602,"method":"GraphKnowledge.Init","time":1749295283,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:299","message":"Initializing GraphKnowledge plugin"}
{"level":"info","pid":16602,"method":"NewClient","ip":"54.92.111.204","port":5670,"time":1749295283,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:93","message":"Creating new GraphRAG client"}
{"level":"info","pid":16602,"method":"GraphKnowledge.Init","time":1749295283,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:311","message":"Initialization successful"}
{"level":"info","pid":16602,"method":"DefineIndexerAndRetriever","collection":"chatRag1","dimension":768,"time":1749295283,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:152","message":"Defining indexer and retriever"}
{"level":"info","pid":16602,"method":"Milvus.newDocStore","collection":"chatRag1","dimension":768,"time":1749295283,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:201","message":"Creating new doc store"}
{"level":"info","pid":16602,"method":"Milvus.newDocStore","collection":"chatRag1","time":1749295284,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:302","message":"Doc store created successfully"}
{"level":"info","pid":16602,"method":"DefineIndexerAndRetriever","collection":"chatRag1","time":1749295284,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:182","message":"Indexer and retriever defined successfully"}
{"level":"info","pid":16602,"method":"DefineIndexerAndRetriever","time":1749295284,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:357","message":"Defining indexer and retriever"}
{"level":"info","pid":16602,"method":"GraphKnowledge.newDocStore","space_id":"","model_name":"Qwen/Qwen2.5-Coder-32B-Instruct","time":1749295284,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:393","message":"Creating new doc store"}
{"level":"info","pid":16602,"method":"GraphKnowledge.newDocStore","time":1749295284,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:399","message":"Doc store created successfully"}
{"level":"info","pid":16602,"method":"DefineIndexerAndRetriever","time":1749295284,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:376","message":"Indexer and retriever defined successfully"}
{"level":"info","pid":16602,"method":"NewKnowledgeClient","endpoint":"lkeap.tencentcloudapi.com","region":"ap-guangzhou","secret_id":"","token":"","time":1749295285,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:43","message":"Creating new KnowledgeClient"}
{"level":"info","pid":16602,"method":"KnowledgeClient.Init","time":1749295285,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:51","message":"Initializing KnowledgeClient"}
{"level":"info","pid":16602,"method":"KnowledgeClient.Init","time":1749295285,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:109","message":"Initialization successful"}
{"level":"info","pid":16602,"time":1749295285,"caller":"/Users/wade/project/wuban/agentchat/flow.go:200","message":"KnowledgeClient initialized successfully"}
{"level":"info","pid":16602,"method":"DefineModelsFlow","provider":"","time":1749295294,"caller":"/Users/wade/project/wuban/agentchat/flow.go:38","message":"Listing models and embedders for provider"}
{"level":"info","pid":16732,"time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/log.go:68","message":"This message appears when log level set to Debug or Info"}
{"level":"info","pid":16732,"method":"DeepSeek.Init","time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:98","message":"Initializing DeepSeek plugin"}
{"level":"info","pid":16732,"method":"DeepSeek.DefineModel","model_name":"deepseek-chat","time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":16732,"method":"Deep lantern","model_name":"deepseek-chat","time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":16732,"method":"DeepSeek.DefineModel","model_name":"deepseek-coder","time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":16732,"method":"Deep lantern","model_name":"deepseek-coder","time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":16732,"method":"DeepSeek.DefineModel","model_name":"deepseek-reasoner","time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":16732,"method":"Deep lantern","model_name":"deepseek-reasoner","time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":16732,"method":"DeepSeek.Init","time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:123","message":"Initialization successful"}
{"level":"info","pid":16732,"method":"Milvus.Init","time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:75","message":"Initializing Milvus plugin"}
{"level":"info","pid":16732,"method":"Milvus.Init","time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:87","message":"Initialization successful"}
{"level":"info","pid":16732,"method":"GraphKnowledge.Init","time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:299","message":"Initializing GraphKnowledge plugin"}
{"level":"info","pid":16732,"method":"NewClient","ip":"54.92.111.204","port":5670,"time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:93","message":"Creating new GraphRAG client"}
{"level":"info","pid":16732,"method":"GraphKnowledge.Init","time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:311","message":"Initialization successful"}
{"level":"info","pid":16732,"method":"DefineIndexerAndRetriever","collection":"chatRag1","dimension":768,"time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:152","message":"Defining indexer and retriever"}
{"level":"info","pid":16732,"method":"Milvus.newDocStore","collection":"chatRag1","dimension":768,"time":1749295322,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:201","message":"Creating new doc store"}
{"level":"info","pid":16732,"method":"Milvus.newDocStore","collection":"chatRag1","time":1749295323,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:302","message":"Doc store created successfully"}
{"level":"info","pid":16732,"method":"DefineIndexerAndRetriever","collection":"chatRag1","time":1749295323,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:182","message":"Indexer and retriever defined successfully"}
{"level":"info","pid":16732,"method":"DefineIndexerAndRetriever","time":1749295323,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:357","message":"Defining indexer and retriever"}
{"level":"info","pid":16732,"method":"GraphKnowledge.newDocStore","space_id":"","model_name":"Qwen/Qwen2.5-Coder-32B-Instruct","time":1749295323,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:393","message":"Creating new doc store"}
{"level":"info","pid":16732,"method":"GraphKnowledge.newDocStore","time":1749295323,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:399","message":"Doc store created successfully"}
{"level":"info","pid":16732,"method":"DefineIndexerAndRetriever","time":1749295323,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:376","message":"Indexer and retriever defined successfully"}
{"level":"info","pid":16732,"method":"NewKnowledgeClient","endpoint":"lkeap.tencentcloudapi.com","region":"ap-guangzhou","secret_id":"","token":"","time":1749295324,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:43","message":"Creating new KnowledgeClient"}
{"level":"info","pid":16732,"method":"KnowledgeClient.Init","time":1749295324,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:51","message":"Initializing KnowledgeClient"}
{"level":"info","pid":16732,"method":"KnowledgeClient.Init","time":1749295324,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:109","message":"Initialization successful"}
{"level":"info","pid":16732,"time":1749295324,"caller":"/Users/wade/project/wuban/agentchat/flow.go:200","message":"KnowledgeClient initialized successfully"}
{"level":"info","pid":16732,"method":"DefineModelsFlow","provider":"","time":1749295332,"caller":"/Users/wade/project/wuban/agentchat/flow.go:38","message":"Listing models and embedders for provider"}
{"level":"info","pid":17042,"time":1749295409,"caller":"/Users/wade/project/wuban/agentchat/log.go:68","message":"This message appears when log level set to Debug or Info"}
{"level":"info","pid":17042,"method":"DeepSeek.Init","time":1749295409,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:98","message":"Initializing DeepSeek plugin"}
{"level":"info","pid":17042,"method":"DeepSeek.DefineModel","model_name":"deepseek-chat","time":1749295409,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":17042,"method":"Deep lantern","model_name":"deepseek-chat","time":1749295409,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":17042,"method":"DeepSeek.DefineModel","model_name":"deepseek-coder","time":1749295409,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":17042,"method":"Deep lantern","model_name":"deepseek-coder","time":1749295409,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":17042,"method":"DeepSeek.DefineModel","model_name":"deepseek-reasoner","time":1749295409,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":17042,"method":"Deep lantern","model_name":"deepseek-reasoner","time":1749295409,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":17042,"method":"DeepSeek.Init","time":1749295409,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:123","message":"Initialization successful"}
{"level":"info","pid":17042,"method":"Milvus.Init","time":1749295409,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:75","message":"Initializing Milvus plugin"}
{"level":"info","pid":17042,"method":"Milvus.Init","time":1749295410,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:87","message":"Initialization successful"}
{"level":"info","pid":17042,"method":"GraphKnowledge.Init","time":1749295410,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:299","message":"Initializing GraphKnowledge plugin"}
{"level":"info","pid":17042,"method":"NewClient","ip":"54.92.111.204","port":5670,"time":1749295410,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:93","message":"Creating new GraphRAG client"}
{"level":"info","pid":17042,"method":"GraphKnowledge.Init","time":1749295410,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:311","message":"Initialization successful"}
{"level":"info","pid":17042,"method":"DefineIndexerAndRetriever","collection":"chatRag1","dimension":768,"time":1749295410,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:152","message":"Defining indexer and retriever"}
{"level":"info","pid":17042,"method":"Milvus.newDocStore","collection":"chatRag1","dimension":768,"time":1749295410,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:201","message":"Creating new doc store"}
{"level":"info","pid":17042,"method":"Milvus.newDocStore","collection":"chatRag1","time":1749295411,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:302","message":"Doc store created successfully"}
{"level":"info","pid":17042,"method":"DefineIndexerAndRetriever","collection":"chatRag1","time":1749295411,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:182","message":"Indexer and retriever defined successfully"}
{"level":"info","pid":17042,"method":"DefineIndexerAndRetriever","time":1749295411,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:357","message":"Defining indexer and retriever"}
{"level":"info","pid":17042,"method":"GraphKnowledge.newDocStore","space_id":"","model_name":"Qwen/Qwen2.5-Coder-32B-Instruct","time":1749295411,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:393","message":"Creating new doc store"}
{"level":"info","pid":17042,"method":"GraphKnowledge.newDocStore","time":1749295411,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:399","message":"Doc store created successfully"}
{"level":"info","pid":17042,"method":"DefineIndexerAndRetriever","time":1749295411,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:376","message":"Indexer and retriever defined successfully"}
{"level":"info","pid":17042,"method":"NewKnowledgeClient","endpoint":"lkeap.tencentcloudapi.com","region":"ap-guangzhou","secret_id":"","token":"","time":1749295412,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:43","message":"Creating new KnowledgeClient"}
{"level":"info","pid":17042,"method":"KnowledgeClient.Init","time":1749295412,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:51","message":"Initializing KnowledgeClient"}
{"level":"info","pid":17042,"method":"KnowledgeClient.Init","time":1749295412,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:109","message":"Initialization successful"}
{"level":"info","pid":17042,"time":1749295412,"caller":"/Users/wade/project/wuban/agentchat/flow.go:207","message":"KnowledgeClient initialized successfully"}
{"level":"info","pid":17042,"method":"DefineModelsFlow","provider":"","time":1749295413,"caller":"/Users/wade/project/wuban/agentchat/flow.go:38","message":"Listing models and embedders for provider"}
{"level":"info","pid":17311,"time":1749295462,"caller":"/Users/wade/project/wuban/agentchat/log.go:68","message":"This message appears when log level set to Debug or Info"}
{"level":"info","pid":17311,"method":"DeepSeek.Init","time":1749295462,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:98","message":"Initializing DeepSeek plugin"}
{"level":"info","pid":17311,"method":"DeepSeek.DefineModel","model_name":"deepseek-chat","time":1749295462,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":17311,"method":"Deep lantern","model_name":"deepseek-chat","time":1749295462,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":17311,"method":"DeepSeek.DefineModel","model_name":"deepseek-coder","time":1749295462,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":17311,"method":"Deep lantern","model_name":"deepseek-coder","time":1749295462,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":17311,"method":"DeepSeek.DefineModel","model_name":"deepseek-reasoner","time":1749295462,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":17311,"method":"Deep lantern","model_name":"deepseek-reasoner","time":1749295462,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":17311,"method":"DeepSeek.Init","time":1749295462,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:123","message":"Initialization successful"}
{"level":"info","pid":17311,"method":"Milvus.Init","time":1749295462,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:75","message":"Initializing Milvus plugin"}
{"level":"info","pid":17311,"method":"Milvus.Init","time":1749295464,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:87","message":"Initialization successful"}
{"level":"info","pid":17311,"method":"GraphKnowledge.Init","time":1749295464,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:299","message":"Initializing GraphKnowledge plugin"}
{"level":"info","pid":17311,"method":"NewClient","ip":"54.92.111.204","port":5670,"time":1749295464,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:93","message":"Creating new GraphRAG client"}
{"level":"info","pid":17311,"method":"GraphKnowledge.Init","time":1749295464,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:311","message":"Initialization successful"}
{"level":"info","pid":17311,"method":"DefineIndexerAndRetriever","collection":"chatRag1","dimension":768,"time":1749295464,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:152","message":"Defining indexer and retriever"}
{"level":"info","pid":17311,"method":"Milvus.newDocStore","collection":"chatRag1","dimension":768,"time":1749295464,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:201","message":"Creating new doc store"}
{"level":"info","pid":17311,"method":"Milvus.newDocStore","collection":"chatRag1","time":1749295464,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:302","message":"Doc store created successfully"}
{"level":"info","pid":17311,"method":"DefineIndexerAndRetriever","collection":"chatRag1","time":1749295464,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:182","message":"Indexer and retriever defined successfully"}
{"level":"info","pid":17311,"method":"DefineIndexerAndRetriever","time":1749295464,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:357","message":"Defining indexer and retriever"}
{"level":"info","pid":17311,"method":"GraphKnowledge.newDocStore","space_id":"","model_name":"Qwen/Qwen2.5-Coder-32B-Instruct","time":1749295464,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:393","message":"Creating new doc store"}
{"level":"info","pid":17311,"method":"GraphKnowledge.newDocStore","time":1749295464,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:399","message":"Doc store created successfully"}
{"level":"info","pid":17311,"method":"DefineIndexerAndRetriever","time":1749295464,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:376","message":"Indexer and retriever defined successfully"}
{"level":"info","pid":17311,"method":"NewKnowledgeClient","endpoint":"lkeap.tencentcloudapi.com","region":"ap-guangzhou","secret_id":"","token":"","time":1749295465,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:43","message":"Creating new KnowledgeClient"}
{"level":"info","pid":17311,"method":"KnowledgeClient.Init","time":1749295465,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:51","message":"Initializing KnowledgeClient"}
{"level":"info","pid":17311,"method":"KnowledgeClient.Init","time":1749295465,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:109","message":"Initialization successful"}
{"level":"info","pid":17311,"time":1749295465,"caller":"/Users/wade/project/wuban/agentchat/flow.go:201","message":"KnowledgeClient initialized successfully"}
{"level":"info","pid":17311,"method":"DefineModelsFlow","provider":"","time":1749295477,"caller":"/Users/wade/project/wuban/agentchat/flow.go:38","message":"Listing models and embedders for provider"}
{"level":"info","pid":17408,"time":1749295519,"caller":"/Users/wade/project/wuban/agentchat/log.go:68","message":"This message appears when log level set to Debug or Info"}
{"level":"info","pid":17408,"method":"DeepSeek.Init","time":1749295519,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:98","message":"Initializing DeepSeek plugin"}
{"level":"info","pid":17408,"method":"DeepSeek.DefineModel","model_name":"deepseek-chat","time":1749295519,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":17408,"method":"Deep lantern","model_name":"deepseek-chat","time":1749295519,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":17408,"method":"DeepSeek.DefineModel","model_name":"deepseek-coder","time":1749295519,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":17408,"method":"Deep lantern","model_name":"deepseek-coder","time":1749295519,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":17408,"method":"DeepSeek.DefineModel","model_name":"deepseek-reasoner","time":1749295519,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":17408,"method":"Deep lantern","model_name":"deepseek-reasoner","time":1749295519,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":17408,"method":"DeepSeek.Init","time":1749295519,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:123","message":"Initialization successful"}
{"level":"info","pid":17408,"method":"Milvus.Init","time":1749295519,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:75","message":"Initializing Milvus plugin"}
{"level":"info","pid":17408,"method":"Milvus.Init","time":1749295520,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:87","message":"Initialization successful"}
{"level":"info","pid":17408,"method":"GraphKnowledge.Init","time":1749295520,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:299","message":"Initializing GraphKnowledge plugin"}
{"level":"info","pid":17408,"method":"NewClient","ip":"54.92.111.204","port":5670,"time":1749295520,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:93","message":"Creating new GraphRAG client"}
{"level":"info","pid":17408,"method":"GraphKnowledge.Init","time":1749295520,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:311","message":"Initialization successful"}
{"level":"info","pid":17408,"method":"DefineIndexerAndRetriever","collection":"chatRag1","dimension":768,"time":1749295520,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:152","message":"Defining indexer and retriever"}
{"level":"info","pid":17408,"method":"Milvus.newDocStore","collection":"chatRag1","dimension":768,"time":1749295520,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:201","message":"Creating new doc store"}
{"level":"info","pid":17408,"method":"Milvus.newDocStore","collection":"chatRag1","time":1749295521,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:302","message":"Doc store created successfully"}
{"level":"info","pid":17408,"method":"DefineIndexerAndRetriever","collection":"chatRag1","time":1749295521,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:182","message":"Indexer and retriever defined successfully"}
{"level":"info","pid":17408,"method":"DefineIndexerAndRetriever","time":1749295521,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:357","message":"Defining indexer and retriever"}
{"level":"info","pid":17408,"method":"GraphKnowledge.newDocStore","space_id":"","model_name":"Qwen/Qwen2.5-Coder-32B-Instruct","time":1749295521,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:393","message":"Creating new doc store"}
{"level":"info","pid":17408,"method":"GraphKnowledge.newDocStore","time":1749295521,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:399","message":"Doc store created successfully"}
{"level":"info","pid":17408,"method":"DefineIndexerAndRetriever","time":1749295521,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:376","message":"Indexer and retriever defined successfully"}
{"level":"info","pid":17408,"method":"NewKnowledgeClient","endpoint":"lkeap.tencentcloudapi.com","region":"ap-guangzhou","secret_id":"","token":"","time":1749295522,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:43","message":"Creating new KnowledgeClient"}
{"level":"info","pid":17408,"method":"KnowledgeClient.Init","time":1749295522,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:51","message":"Initializing KnowledgeClient"}
{"level":"info","pid":17408,"method":"KnowledgeClient.Init","time":1749295522,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:109","message":"Initialization successful"}
{"level":"info","pid":17408,"time":1749295522,"caller":"/Users/wade/project/wuban/agentchat/flow.go:201","message":"KnowledgeClient initialized successfully"}
{"level":"info","pid":17408,"method":"DefineModelsFlow","provider":"","time":1749295526,"caller":"/Users/wade/project/wuban/agentchat/flow.go:38","message":"Listing models and embedders for provider"}
{"level":"info","pid":19897,"time":1749296374,"caller":"/Users/wade/project/wuban/agentchat/log.go:68","message":"This message appears when log level set to Debug or Info"}
{"level":"info","pid":19897,"method":"DeepSeek.Init","time":1749296374,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:98","message":"Initializing DeepSeek plugin"}
{"level":"info","pid":19897,"method":"DeepSeek.DefineModel","model_name":"deepseek-chat","time":1749296374,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":19897,"method":"Deep lantern","model_name":"deepseek-chat","time":1749296374,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":19897,"method":"DeepSeek.DefineModel","model_name":"deepseek-coder","time":1749296374,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":19897,"method":"Deep lantern","model_name":"deepseek-coder","time":1749296374,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":19897,"method":"DeepSeek.DefineModel","model_name":"deepseek-reasoner","time":1749296374,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:132","message":"Defining DeepSeek model"}
{"level":"info","pid":19897,"method":"Deep lantern","model_name":"deepseek-reasoner","time":1749296374,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:162","message":"Model defined successfully"}
{"level":"info","pid":19897,"method":"DeepSeek.Init","time":1749296374,"caller":"/Users/wade/project/wuban/agentchat/plugins/deepseek/deepseek.go:123","message":"Initialization successful"}
{"level":"info","pid":19897,"method":"Milvus.Init","time":1749296374,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:75","message":"Initializing Milvus plugin"}
{"level":"info","pid":19897,"method":"Milvus.Init","time":1749296376,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:87","message":"Initialization successful"}
{"level":"info","pid":19897,"method":"GraphKnowledge.Init","time":1749296376,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:299","message":"Initializing GraphKnowledge plugin"}
{"level":"info","pid":19897,"method":"NewClient","ip":"54.92.111.204","port":5670,"time":1749296376,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:93","message":"Creating new GraphRAG client"}
{"level":"info","pid":19897,"method":"GraphKnowledge.Init","time":1749296376,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:311","message":"Initialization successful"}
{"level":"info","pid":19897,"method":"DefineIndexerAndRetriever","collection":"chatRag1","dimension":768,"time":1749296376,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:152","message":"Defining indexer and retriever"}
{"level":"info","pid":19897,"method":"Milvus.newDocStore","collection":"chatRag1","dimension":768,"time":1749296376,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:201","message":"Creating new doc store"}
{"level":"info","pid":19897,"method":"Milvus.newDocStore","collection":"chatRag1","time":1749296377,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:302","message":"Doc store created successfully"}
{"level":"info","pid":19897,"method":"DefineIndexerAndRetriever","collection":"chatRag1","time":1749296377,"caller":"/Users/wade/project/wuban/agentchat/plugins/milvus/milvus.go:182","message":"Indexer and retriever defined successfully"}
{"level":"info","pid":19897,"method":"DefineIndexerAndRetriever","time":1749296377,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:357","message":"Defining indexer and retriever"}
{"level":"info","pid":19897,"method":"GraphKnowledge.newDocStore","space_id":"","model_name":"Qwen/Qwen2.5-Coder-32B-Instruct","time":1749296377,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:393","message":"Creating new doc store"}
{"level":"info","pid":19897,"method":"GraphKnowledge.newDocStore","time":1749296377,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:399","message":"Doc store created successfully"}
{"level":"info","pid":19897,"method":"DefineIndexerAndRetriever","time":1749296377,"caller":"/Users/wade/project/wuban/agentchat/plugins/graphrag/graph.go:376","message":"Indexer and retriever defined successfully"}
{"level":"info","pid":19897,"method":"NewKnowledgeClient","endpoint":"lkeap.tencentcloudapi.com","region":"ap-guangzhou","secret_id":"","token":"","time":1749296377,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:43","message":"Creating new KnowledgeClient"}
{"level":"info","pid":19897,"method":"KnowledgeClient.Init","time":1749296377,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:51","message":"Initializing KnowledgeClient"}
{"level":"info","pid":19897,"method":"KnowledgeClient.Init","time":1749296377,"caller":"/Users/wade/project/wuban/agentchat/plugins/knowledge/knowledge.go:109","message":"Initialization successful"}
{"level":"info","pid":19897,"time":1749296377,"caller":"/Users/wade/project/wuban/agentchat/flow.go:327","message":"KnowledgeClient initialized successfully"}
{"level":"info","pid":19897,"method":"DefineModelsFlow","provider":"","time":1749296388,"caller":"/Users/wade/project/wuban/agentchat/flow.go:39","message":"Listing models and embedders for provider"}
{"level":"info","pid":19897,"method":"DefineModelsFlow","provider":"","time":1749296388,"caller":"/Users/wade/project/wuban/agentchat/flow.go:149","message":"------default---"}
{"level":"info","pid":19897,"method":"DefineModelsFlow","provider":"ollama","time":1749296437,"caller":"/Users/wade/project/wuban/agentchat/flow.go:39","message":"Listing models and embedders for provider"}
...@@ -153,86 +153,6 @@ func DefineModelsFlow(g *genkit.Genkit) { ...@@ -153,86 +153,6 @@ func DefineModelsFlow(g *genkit.Genkit) {
}) })
} }
// DefineModelsFlow 定义 models 流
// func DefineModelsFlow(g *genkit.Genkit) {
// genkit.DefineFlow(g, "models", func(ctx context.Context, provider string) ([]ProviderInfo, error) {
// log.Info().
// Str("method", "DefineModelsFlow").
// Str("provider", provider).
// Msg("Listing models and embedders for provider")
// infos := make([]ProviderInfo, 0, 2)
// switch provider {
// case googlegenai.GoogleAIProvider:
// goggleModels, err := googlegenai.ListModels(googlegenai.GoogleAIProvider)
// if err != nil {
// log.Error().
// Str("method", "DefineModelsFlow").
// Str("provider", provider).
// Err(err).
// Msg("Failed to list Google AI provider info")
// return nil, err
// }
// goggleEmbedders, err := googlegenai.ListEmbedders(genai.BackendGeminiAPI) //ListModels(googlegenai.GoogleAIProvider)
// if err != nil {
// log.Error().
// Str("method", "DefineModelsFlow").
// Str("provider", provider).
// Err(err).
// Msg("Failed to list Google AI provider info")
// return nil, err
// }
// googleInfo := ProviderInfo{
// Provider: googlegenai.GoogleAIProvider,
// Models: goggleModels,
// Embedders: goggleEmbedders,
// }
// infos = append(infos, googleInfo)
// return infos, nil
// case deepseek.Provider:
// dsModels := deepseek.ListModels()
// infos = append(infos, ProviderInfo{
// Provider: deepseek.Provider,
// Models: dsModels,
// })
// return infos, nil
// default:
// infos := make([]ProviderInfo, 0, 2)
// goggleModels, err := googlegenai.ListModels(googlegenai.GoogleAIProvider)
// if err != nil {
// return nil, err
// }
// goggleEmbedders, err := googlegenai.ListEmbedders(genai.BackendGeminiAPI) //ListModels(googlegenai.GoogleAIProvider)
// if err != nil {
// return nil, err
// }
// googleInfo := ProviderInfo{
// Provider: googlegenai.GoogleAIProvider,
// Models: goggleModels,
// Embedders: goggleEmbedders,
// }
// infos = append(infos, googleInfo)
// dsModels := deepseek.ListModels()
// infos = append(infos, ProviderInfo{
// Provider: deepseek.Provider,
// Models: dsModels,
// })
// fmt.Println(provider,"------default---")
// return infos, err
// }
// })
// }
func DefineGraphFlow(g *genkit.Genkit, graphIndexer ai.Indexer) { func DefineGraphFlow(g *genkit.Genkit, graphIndexer ai.Indexer) {
genkit.DefineFlow(g, "index/graph", func(ctx context.Context, input *GraphInput) (Response, error) { genkit.DefineFlow(g, "index/graph", func(ctx context.Context, input *GraphInput) (Response, error) {
......
package main
import (
"fmt"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
lkeap "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lkeap/v20240522"
)
func main() {
// 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
// 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性
// 以下代码示例仅供参考,建议采用更安全的方式来使用密钥
// 请参见:https://cloud.tencent.com/document/product/1278/85305
// 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
credential := common.NewCredential(
"AKID64oLfmfLtESUJ6i8LPSM4gCVbiniQuBF",
"rX2JMBnBMJ2YqulOo37xa5OUMSN4Xnpd",
)
// 使用临时密钥示例
// credential := common.NewTokenCredential("SecretId", "SecretKey", "Token")
// 实例化一个client选项,可选的,没有特殊需求可以跳过
cpf := profile.NewClientProfile()
cpf.HttpProfile.Endpoint = "lkeap.tencentcloudapi.com"
// 实例化要请求产品的client对象,clientProfile是可选的
client, _ := lkeap.NewClient(credential, "ap-guangzhou", cpf)
// 实例化一个请求对象,每个接口都会对应一个request对象
request := lkeap.NewReconstructDocumentSSERequest()
request.FileType = common.StringPtr("TXT")
request.FileBase64 = common.StringPtr("data:application/octet-stream;base64,4oCc6L+Z5bCx6LGh6Iqx5LiA5qC344CC5aaC5p6c5L2g54ix5LiK5LqG5LiA5py155Sf6ZW/IArlnKjkuIDpopfmmJ/mmJ/kuIrnmoToirHvvIzpgqPkuYjlpJzpl7TvvIwgCuS9oOeci+edgOWkqeepuuWwseaEn+WIsOeUnOicnOaEiSAK5b+r44CC5omA5pyJ55qE5pif5pif5LiK6YO9CuWlveixoeW8gOedgOiKseOAguKAnQ==")
// 返回的resp是一个ReconstructDocumentSSEResponse的实例,与请求对象对应
response, err := client.ReconstructDocumentSSE(request)
if _, ok := err.(*errors.TencentCloudSDKError); ok {
fmt.Printf("An API error has returned: %s", err)
return
}
if err != nil {
panic(err)
}
// 输出json格式的字符串回包
if response.Response != nil {
// 非流式响应
fmt.Println(response.ToJsonString())
} else {
// 流式响应
for event := range response.Events {
fmt.Println(string(event.Data))
}
}
}
\ No newline at end of file
...@@ -2,6 +2,7 @@ package knowledge ...@@ -2,6 +2,7 @@ package knowledge
import ( import (
"context" "context"
"encoding/base64"
"encoding/json" "encoding/json"
"fmt" "fmt"
"os" "os"
...@@ -289,3 +290,308 @@ func (kc *KnowledgeClient) QueryRewriteWithSummary(ctx context.Context, userQues ...@@ -289,3 +290,308 @@ func (kc *KnowledgeClient) QueryRewriteWithSummary(ctx context.Context, userQues
// Call QueryRewrite // Call QueryRewrite
return kc.QueryRewrite(ctx, req) return kc.QueryRewrite(ctx, req)
} }
// ReconstructDocumentSSE performs document reconstruction using the Tencent Cloud LKEAP API.
// It takes a text string, encodes it as Base64, and returns the response as a JSON string.
func (kc *KnowledgeClient) ReconstructDocumentSSE(ctx context.Context, text string) (string, error) {
log.Info().
Str("method", "KnowledgeClient.ReconstructDocumentSSE").
Str("text_prefix", text[:min(32, len(text))]).
Msg("Starting document reconstruction operation")
if !kc.initted {
log.Error().Str("method", "KnowledgeClient.ReconstructDocumentSSE").Msg("Client not initialized")
return "", fmt.Errorf("knowledge client not initialized; call Init first")
}
// Validate input
if text == "" {
log.Error().Str("method", "KnowledgeClient.ReconstructDocumentSSE").Msg("Text is required")
return "", fmt.Errorf("text is required")
}
// Encode text to Base64
base64Data := base64.StdEncoding.EncodeToString([]byte(text))
// Check Base64 size (8MB limit)
if len(base64Data)/4*3 > 8*1024*1024 {
log.Error().Str("method", "KnowledgeClient.ReconstructDocumentSSE").Msg("Encoded text exceeds 8MB limit")
return "", fmt.Errorf("encoded text exceeds 8MB limit")
}
// Remove Base64 prefix if present
if strings.HasPrefix(base64Data, "data:application/octet-stream;base64,") {
base64Data = strings.TrimPrefix(base64Data, "data:application/octet-stream;base64,")
log.Debug().Str("method", "KnowledgeClient.ReconstructDocumentSSE").Msg("Removed Base64 data URI prefix")
}
// Create SDK request
request := lkeap.NewReconstructDocumentSSERequest()
request.FileType = common.StringPtr("TXT")
request.FileBase64 = common.StringPtr(base64Data)
// Debug request
requestAsJson, _ := json.Marshal(request)
log.Debug().
Str("method", "KnowledgeClient.ReconstructDocumentSSE").
Str("request_json", string(requestAsJson)).
Msg("Prepared Tencent Cloud request")
// Perform request
response, err := kc.client.ReconstructDocumentSSEWithContext(ctx, request)
if _, ok := err.(*errors.TencentCloudSDKError); ok {
log.Error().
Err(err).
Str("method", "KnowledgeClient.ReconstructDocumentSSE").
Msg("Tencent Cloud API error")
return "", fmt.Errorf("tencent cloud api error: %s", err)
}
if err != nil {
log.Error().
Err(err).
Str("method", "KnowledgeClient.ReconstructDocumentSSE").
Msg("Failed to perform document reconstruction")
return "", fmt.Errorf("document reconstruction failed: %w", err)
}
// Handle response
var result string
if response.Response != nil {
// Non-streaming response
result = response.ToJsonString()
log.Info().
Str("method", "KnowledgeClient.ReconstructDocumentSSE").
Str("response_json", result).
Msg("Received non-streaming response")
} else {
// Streaming response
var events []string
for event := range response.Events {
eventData := string(event.Data)
events = append(events, eventData)
log.Debug().
Str("method", "KnowledgeClient.ReconstructDocumentSSE").
Str("event_data", eventData).
Msg("Received streaming event")
}
// Combine events into a single JSON array
eventsJson, _ := json.Marshal(events)
result = string(eventsJson)
log.Info().
Str("method", "KnowledgeClient.ReconstructDocumentSSE").
Str("response_json", result).
Msg("Received streaming response")
}
log.Info().
Str("method", "KnowledgeClient.ReconstructDocumentSSE").
Msg("Document reconstruction operation completed successfully")
return result, nil
}
// min returns the minimum of two integers
func min(a, b int) int {
if a < b {
return a
}
return b
}
// // DocumentFragment represents a split document fragment (custom definition due to SDK missing DocumentFragment).
// type DocumentFragment struct {
// Content *string `json:"Content"`
// Index *int64 `json:"Index"`
// }
// // SplitDocument performs a synchronous document split using the Tencent Cloud LKEAP API.
// // It takes a text string, encodes it as Base64, and returns the split content as a slice of strings.
// func (kc *KnowledgeClient) SplitDocument(ctx context.Context, text string) ([]string, error) {
// log.Info().
// Str("method", "KnowledgeClient.SplitDocument").
// Str("text_prefix", text[:min(32, len(text))]).
// Msg("Starting document split operation")
// if !kc.initted {
// log.Error().Str("method", "KnowledgeClient.SplitDocument").Msg("Client not initialized")
// return nil, fmt.Errorf("knowledge client not initialized; call Init first")
// }
// // Validate input
// if text == "" {
// log.Error().Str("method", "KnowledgeClient.SplitDocument").Msg("Text is required")
// return nil, fmt.Errorf("text is required")
// }
// // Encode text to Base64
// base64Data := base64.StdEncoding.EncodeToString([]byte(text))
// // Check Base64 size (8MB limit)
// if len(base64Data)/4*3 > 8*1024*1024 {
// log.Error().Str("method", "KnowledgeClient.SplitDocument").Msg("Encoded text exceeds 8MB limit")
// return nil, fmt.Errorf("encoded text exceeds 8MB limit")
// }
// // Create SDK request
// tencentReq := lkeap.NewCreateSplitDocumentFlowRequest()
// tencentReq.FileType = common.StringPtr("TXT")
// tencentReq.FileBase64 = common.StringPtr(base64Data)
// tencentReq.FileName = common.StringPtr("input.txt")
// // tencentReq.SplitType = common.StringPtr("paragraph")
// // Debug request
// tencentReqAsJson, _ := json.Marshal(tencentReq)
// log.Debug().
// Str("method", "KnowledgeClient.SplitDocument").
// Str("request_json", string(tencentReqAsJson)).
// Msg("Prepared Tencent Cloud request")
// // Perform request
// response, err := kc.client.CreateSplitDocumentFlowWithContext(ctx, tencentReq)
// if _, ok := err.(*errors.TencentCloudSDKError); ok {
// log.Error().
// Err(err).
// Str("method", "KnowledgeClient.SplitDocument").
// Msg("Tencent Cloud API error")
// return nil, fmt.Errorf("tencent cloud api error: %s", err)
// }
// if err != nil {
// log.Error().
// Err(err).
// Str("method", "KnowledgeClient.SplitDocument").
// Msg("Failed to perform document split")
// return nil, fmt.Errorf("document split failed: %w", err)
// }
// // Convert SplitResults to DocumentFragment and extract Content
// var splitContents []string
// for i, result := range *response.Response.TaskId {
// resultJson, _ := json.Marshal(result)
// var fragment DocumentFragment
// if err := json.Unmarshal(resultJson, &fragment); err != nil {
// log.Error().
// Err(err).
// Str("method", "KnowledgeClient.SplitDocument").
// Int("index", i).
// Msg("Failed to parse split result")
// return nil, fmt.Errorf("failed to parse split result at index %d: %w", i, err)
// }
// if fragment.Content == nil {
// log.Warn().
// Str("method", "KnowledgeClient.SplitDocument").
// Int("index", i).
// Msg("Split result has nil Content")
// continue
// }
// splitContents = append(splitContents, *fragment.Content)
// }
// log.Info().
// Str("method", "KnowledgeClient.SplitDocument").
// Str("request_id", *response.Response.RequestId).
// Int("results_count", len(splitContents)).
// Str("raw_response", response.ToJsonString()).
// Msg("Document split operation completed successfully")
// return splitContents, nil
// }
// // min returns the minimum of two integers
// func min(a, b int) int {
// if a < b {
// return a
// }
// return b
// }
// func (kc *KnowledgeClient) ReconstructDocumentSSE(text string) {
// // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
// // 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性
// // 以下代码示例仅供参考,建议采用更安全的方式来使用密钥
// // 请参见:https://cloud.tencent.com/document/product/1278/85305
// // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
// // credential := common.NewCredential(
// // "AKID64oLfmfLtESUJ6i8LPSM4gCVbiniQuBF",
// // "rX2JMBnBMJ2YqulOo37xa5OUMSN4Xnpd",
// // )
// // // 使用临时密钥示例
// // // credential := common.NewTokenCredential("SecretId", "SecretKey", "Token")
// // // 实例化一个client选项,可选的,没有特殊需求可以跳过
// // cpf := profile.NewClientProfile()
// // cpf.HttpProfile.Endpoint = "lkeap.tencentcloudapi.com"
// // // 实例化要请求产品的client对象,clientProfile是可选的
// // client, _ := lkeap.NewClient(credential, "ap-guangzhou", cpf)
// // 实例化一个请求对象,每个接口都会对应一个request对象
// request := lkeap.NewReconstructDocumentSSERequest()
// // Encode text to Base64
// base64Data := base64.StdEncoding.EncodeToString([]byte(text))
// // Check Base64 size (8MB limit)
// if len(base64Data)/4*3 > 8*1024*1024 {
// log.Error().Str("method", "KnowledgeClient.SplitDocument").Msg("Encoded text exceeds 8MB limit")
// return nil, fmt.Errorf("encoded text exceeds 8MB limit")
// }
// request.FileType = common.StringPtr("TXT")
// request.FileBase64 = common.StringPtr("data:application/octet-stream;base64,4oCc6L+Z5bCx6LGh6Iqx5LiA5qC344CC5aaC5p6c5L2g54ix5LiK5LqG5LiA5py155Sf6ZW/IArlnKjkuIDpopfmmJ/mmJ/kuIrnmoToirHvvIzpgqPkuYjlpJzpl7TvvIwgCuS9oOeci+edgOWkqeepuuWwseaEn+WIsOeUnOicnOaEiSAK5b+r44CC5omA5pyJ55qE5pif5pif5LiK6YO9CuWlveixoeW8gOedgOiKseOAguKAnQ==")
// // 返回的resp是一个ReconstructDocumentSSEResponse的实例,与请求对象对应
// response, err := kc.client.ReconstructDocumentSSE(request)
// if _, ok := err.(*errors.TencentCloudSDKError); ok {
// fmt.Printf("An API error has returned: %s", err)
// return
// }
// if err != nil {
// panic(err)
// }
// // 输出json格式的字符串回包
// if response.Response != nil {
// // 非流式响应
// fmt.Println(response.ToJsonString())
// } else {
// // 流式响应
// for event := range response.Events {
// fmt.Println(string(event.Data))
// }
// }
// }
...@@ -3,6 +3,7 @@ package knowledge ...@@ -3,6 +3,7 @@ package knowledge
import ( import (
"context" "context"
"os" "os"
"strings"
"testing" "testing"
"github.com/rs/zerolog" "github.com/rs/zerolog"
...@@ -113,7 +114,9 @@ func TestKnowledgeClient_QueryRewrite(t *testing.T) { ...@@ -113,7 +114,9 @@ func TestKnowledgeClient_QueryRewrite(t *testing.T) {
} }
} }
func TestKnowledgeClient_QueryRewriteWithSummary(t *testing.T) {
func TestKnowledgeClient_ReconstructDocumentSSE(t *testing.T) {
// Warning: Do not hardcode credentials in production code. Use environment variables or a secure vault. // Warning: Do not hardcode credentials in production code. Use environment variables or a secure vault.
os.Setenv("TENCENTCLOUD_SECRET_ID", "AKID64oLfmfLtESUJ6i8LPSM4gCVbiniQuBF") os.Setenv("TENCENTCLOUD_SECRET_ID", "AKID64oLfmfLtESUJ6i8LPSM4gCVbiniQuBF")
os.Setenv("TENCENTCLOUD_SECRET_KEY", "rX2JMBnBMJ2YqulOo37xa5OUMSN4Xnpd") os.Setenv("TENCENTCLOUD_SECRET_KEY", "rX2JMBnBMJ2YqulOo37xa5OUMSN4Xnpd")
...@@ -135,29 +138,47 @@ func TestKnowledgeClient_QueryRewriteWithSummary(t *testing.T) { ...@@ -135,29 +138,47 @@ func TestKnowledgeClient_QueryRewriteWithSummary(t *testing.T) {
// Test cases // Test cases
tests := []struct { tests := []struct {
name string name string
userQuestion string text string
assistantAnswer string initClient bool
historySummary string
expectError bool expectError bool
}{ }{
{ {
name: "ValidWithSummary", name: "ValidText",
userQuestion: "你的家在哪里", text: "Sample text for reconstruction.\nAnother line.",
assistantAnswer: "国内", initClient: true,
historySummary: "null", //"User asked about location preferences earlier.",
expectError: true, // Expect error due to potentially invalid credentials expectError: true, // Expect error due to potentially invalid credentials
}, },
{
name: "EmptyText",
text: "",
initClient: true,
expectError: true,
},
{
name: "LargeText",
text: strings.Repeat("a", 9*1024*1024), // ~9MB
initClient: true,
expectError: true,
},
{
name: "UninitializedClient",
text: "Sample text.",
initClient: false,
expectError: true,
},
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
// Initialize client for each test // Initialize client if required
if tt.initClient {
if err := client.Init(ctx); err != nil { if err := client.Init(ctx); err != nil {
t.Fatalf("Failed to initialize KnowledgeClient: %v", err) t.Fatalf("Failed to initialize KnowledgeClient: %v", err)
} }
}
// Perform query rewrite with summary // Perform document reconstruction
resp, err := client.QueryRewriteWithSummary(ctx, tt.userQuestion, tt.assistantAnswer, tt.historySummary) result, err := client.ReconstructDocumentSSE(ctx, tt.text)
// Check error expectation // Check error expectation
if tt.expectError { if tt.expectError {
...@@ -165,7 +186,7 @@ func TestKnowledgeClient_QueryRewriteWithSummary(t *testing.T) { ...@@ -165,7 +186,7 @@ func TestKnowledgeClient_QueryRewriteWithSummary(t *testing.T) {
t.Error("Expected error, got none") t.Error("Expected error, got none")
} else { } else {
log.Debug(). log.Debug().
Str("method", "TestKnowledgeClient_QueryWithSummary"). Str("method", "TestKnowledgeClient_ReconstructDocumentSSE").
Str("test_name", tt.name). Str("test_name", tt.name).
Str("error", err.Error()). Str("error", err.Error()).
Msg("Received expected error") Msg("Received expected error")
...@@ -175,17 +196,17 @@ func TestKnowledgeClient_QueryRewriteWithSummary(t *testing.T) { ...@@ -175,17 +196,17 @@ func TestKnowledgeClient_QueryRewriteWithSummary(t *testing.T) {
// Check response // Check response
if err != nil { if err != nil {
t.Errorf("QueryRewriteWithSummary failed: %v", err) t.Errorf("ReconstructDocumentSSE failed: %v", err)
} }
if resp.RewrittenQuery == "" { if result == "" {
t.Error("Expected non-empty rewritten query") t.Error("Expected non-empty response JSON")
} }
log.Info(). log.Info().
Str("method", "TestKnowledgeClient_QueryWithSummary"). Str("method", "TestKnowledgeClient_ReconstructDocumentSSE").
Str("test_name", tt.name). Str("test_name", tt.name).
Str("rewritten_query", resp.RewrittenQuery). Str("response_json", result[:min(100, len(result))]).
Msg("Query rewrite with summary successful") Msg("Document reconstruction successful")
}) })
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment