add knowledge pipeline manager

This commit is contained in:
tsukasa
2023-10-19 10:47:45 +08:00
parent ce033c2381
commit f80ec04272
9 changed files with 17 additions and 26 deletions
-2
View File
@@ -5,8 +5,6 @@ from .agent import AIAgent,AIAgentTemplete
from .compute_kernel import ComputeKernel,ComputeTask,ComputeTaskResult,ComputeTaskState,ComputeTaskType from .compute_kernel import ComputeKernel,ComputeTask,ComputeTaskResult,ComputeTaskState,ComputeTaskType
from .compute_node import ComputeNode,LocalComputeNode from .compute_node import ComputeNode,LocalComputeNode
from .open_ai_node import OpenAI_ComputeNode from .open_ai_node import OpenAI_ComputeNode
from .knowledge_base import KnowledgeBase, KnowledgeEnvironment
from .knowledge_pipeline import KnowledgeEmailSource, KnowledgeDirSource, KnowledgePipline
from .role import AIRole,AIRoleGroup from .role import AIRole,AIRoleGroup
from .workflow import Workflow from .workflow import Workflow
from .bus import AIBus from .bus import AIBus
+1 -3
View File
@@ -16,7 +16,6 @@ from .compute_task import ComputeTaskResult,ComputeTaskResultCode
from .ai_function import AIFunction from .ai_function import AIFunction
from .environment import Environment from .environment import Environment
from .contact_manager import ContactManager,Contact,FamilyMember from .contact_manager import ContactManager,Contact,FamilyMember
from .knowledge_base import KnowledgeBase
from .compute_kernel import ComputeKernel from .compute_kernel import ComputeKernel
from .bus import AIBus from .bus import AIBus
@@ -550,8 +549,7 @@ class AIAgent:
def parser_learn_llm_result(self,llm_result:str): def parser_learn_llm_result(self,llm_result:str):
pass pass
async def _llm_read_article(self,kb:KnowledgeBase,item:KnowledgeObject) -> ComputeTaskResult: async def _llm_read_article(self,item:KnowledgeObject) -> ComputeTaskResult:
#kb_env = KnowledgeBaseFileSystemEnvironment()
full_content = item.get_article_full_content() full_content = item.get_article_full_content()
full_content_len = ComputeKernel.llm_num_tokens_from_text(full_content,self.get_llm_model_name()) full_content_len = ComputeKernel.llm_num_tokens_from_text(full_content,self.get_llm_model_name())
if full_content_len < self.get_llm_learn_token_limit(): if full_content_len < self.get_llm_learn_token_limit():
+3 -5
View File
@@ -10,9 +10,7 @@ from telegram import Bot
from telegram.ext import Updater from telegram.ext import Updater
from telegram.error import Forbidden, NetworkError from telegram.error import Forbidden, NetworkError
from knowledge.object.object_id import ObjectType from knowledge import ObjectType, KnowledgeStore
from .knowledge_base import KnowledgeBase
from .tunnel import AgentTunnel from .tunnel import AgentTunnel
from .storage import AIStorage from .storage import AIStorage
@@ -236,10 +234,10 @@ class TelegramTunnel(AgentTunnel):
await update.message.reply_text("") await update.message.reply_text("")
return return
knowledge_object = KnowledgeBase().parse_object_in_message(resp_msg.body) knowledge_object = KnowledgeStore().parse_object_in_message(resp_msg.body)
if knowledge_object is not None: if knowledge_object is not None:
if knowledge_object.get_object_type() == ObjectType.Image: if knowledge_object.get_object_type() == ObjectType.Image:
image = KnowledgeBase().bytes_from_object(knowledge_object) image = KnowledgeStore().bytes_from_object(knowledge_object)
try: try:
async with aiofiles.open("tg_send_temp.png", mode='wb') as local_file: async with aiofiles.open("tg_send_temp.png", mode='wb') as local_file:
if local_file: if local_file:
+3 -4
View File
@@ -1,7 +1,6 @@
from ..object import KnowledgeObject, ObjectRelationStore from ..object import KnowledgeObject, ObjectRelationStore
from ..data import ChunkList, ChunkListWriter from ..data import ChunkList, ChunkListWriter
from ..object import ObjectType from ..object import ObjectType
from .. import KnowledgeStore
# desc # desc
# meta # meta
@@ -49,13 +48,13 @@ class DocumentObjectBuilder:
self.text = text self.text = text
return self return self
def build(self) -> DocumentObject: def build(self, store) -> DocumentObject:
chunk_list = KnowledgeStore().get_chunk_list_writer().create_chunk_list_from_text(self.text) chunk_list = store.get_chunk_list_writer().create_chunk_list_from_text(self.text)
doc = DocumentObject(self.meta, self.tags, chunk_list) doc = DocumentObject(self.meta, self.tags, chunk_list)
doc_id = doc.calculate_id() doc_id = doc.calculate_id()
# Add relation to store # Add relation to store
for chunk_id in chunk_list.chunk_list: for chunk_id in chunk_list.chunk_list:
KnowledgeStore().get_relation_store().add_relation(chunk_id, doc_id) store.get_relation_store().add_relation(chunk_id, doc_id)
return doc return doc
+3 -4
View File
@@ -1,4 +1,3 @@
from .. import KnowledgeStore
from .rich_text_object import RichTextObject, RichTextObjectBuilder from .rich_text_object import RichTextObject, RichTextObjectBuilder
from ..object import ObjectID, ObjectType, KnowledgeObject from ..object import ObjectID, ObjectType, KnowledgeObject
from .document_object import DocumentObjectBuilder from .document_object import DocumentObjectBuilder
@@ -68,11 +67,11 @@ class EmailObjectBuilder:
self.folder = folder self.folder = folder
return self return self
def build(self) -> EmailObject: def build(self, store) -> EmailObject:
# Just get the object store and relation store from global KnowledgeStore # Just get the object store and relation store from global KnowledgeStore
store = KnowledgeStore().get_object_store() store = store.get_object_store()
relation = KnowledgeStore().get_relation_store() relation = store.get_relation_store()
# Read meta.json # Read meta.json
meta = {} meta = {}
+2 -3
View File
@@ -1,7 +1,6 @@
from ..object import KnowledgeObject from ..object import KnowledgeObject
from ..data import ChunkList, ChunkListWriter from ..data import ChunkList, ChunkListWriter
from ..object import ObjectType from ..object import ObjectType
from .. import KnowledgeStore
import os import os
# desc # desc
@@ -86,10 +85,10 @@ class ImageObjectBuilder:
self.restore_file = restore_file self.restore_file = restore_file
return self return self
def build(self) -> ImageObject: def build(self, store) -> ImageObject:
file_size = os.path.getsize(self.image_file) file_size = os.path.getsize(self.image_file)
chunk_list = KnowledgeStore().get_chunk_list_writer().create_chunk_list_from_file( chunk_list = store.get_chunk_list_writer().create_chunk_list_from_file(
self.image_file, 1024 * 1024 * 4, self.restore_file self.image_file, 1024 * 1024 * 4, self.restore_file
) )
exif = get_exif_data(self.image_file) exif = get_exif_data(self.image_file)
+2 -3
View File
@@ -1,7 +1,6 @@
from ..object import KnowledgeObject from ..object import KnowledgeObject
from ..data import ChunkList, ChunkListWriter from ..data import ChunkList, ChunkListWriter
from ..object import ObjectType from ..object import ObjectType
from .. import KnowledgeStore
# desc # desc
# meta # meta
@@ -76,8 +75,8 @@ class VideoObjectBuilder:
self.restore_file = restore_file self.restore_file = restore_file
return self return self
def build(self) -> VideoObject: def build(self, store) -> VideoObject:
chunk_list = KnowledgeStore().get_chunk_list_writer().create_chunk_list_from_file( chunk_list = store.get_chunk_list_writer().create_chunk_list_from_file(
self.video_file, 1024 * 1024 * 4, self.restore_file self.video_file, 1024 * 1024 * 4, self.restore_file
) )
info = get_video_info(self.video_file) info = get_video_info(self.video_file)
+1
View File
@@ -7,6 +7,7 @@ import sqlite3
import os import os
from . import ObjectID, KnowledgeStore from . import ObjectID, KnowledgeStore
import asyncio import asyncio
from enum import Enum
class KnowledgePipelineJournal: class KnowledgePipelineJournal:
def __init__(self, time: datetime.datetime, object_id: str, input: str, parser: str): def __init__(self, time: datetime.datetime, object_id: str, input: str, parser: str):
+2 -2
View File
@@ -1,7 +1,7 @@
import os import os
from .object import ObjectStore, ObjectRelationStore, ObjectID, ObjectType, KnowledgeObject, DocumentObject, ImageObject, VideoObject, RichTextObject, EmailObject from .object import ObjectStore, ObjectRelationStore, ObjectID, ObjectType, KnowledgeObject
from core_object import DocumentObject, ImageObject, VideoObject, RichTextObject, EmailObject from .core_object import DocumentObject, ImageObject, VideoObject, RichTextObject, EmailObject
from .data import ChunkStore, ChunkTracker, ChunkListWriter, ChunkReader from .data import ChunkStore, ChunkTracker, ChunkListWriter, ChunkReader
import json import json
import logging import logging