add agent Mia
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
instance_id = "Mia"
|
||||||
|
fullname = "Mia"
|
||||||
|
llm_model_name = "gpt-3.5-turbo-16k-0613"
|
||||||
|
max_token_size = 16000
|
||||||
|
#enable_function =["add_event"]
|
||||||
|
#enable_kb = "true"
|
||||||
|
enable_timestamp = "true"
|
||||||
|
owner_prompt = "我是你的主人{name}"
|
||||||
|
contact_prompt = "我是你的朋友{name}"
|
||||||
|
owner_env = "knowledge"
|
||||||
|
|
||||||
|
[[prompt]]
|
||||||
|
role = "system"
|
||||||
|
content = """
|
||||||
|
你叫Mia,你可以访问我的个人知识库。
|
||||||
|
|
||||||
|
***
|
||||||
|
你在收到我的信息后,按如下规则处理
|
||||||
|
1. 在第一次接受到一条信息时,优先尝试用合适的关键字查询去查询知识库。
|
||||||
|
2. 如果信息中包含一段知识库的查询结果,尝试用查询结果处理,如果还是不能处理,尝试递增index继续查询。
|
||||||
|
3. 如果知识库返回不了结果了,请尽力返回。
|
||||||
|
"""
|
||||||
@@ -5,7 +5,7 @@ from .agent import AIAgent,AIAgentTemplete,AgentPrompt
|
|||||||
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
|
from .knowledge_base import KnowledgeBase, KnowledgeEnvironment
|
||||||
from .knowledge_pipeline import KnowledgeEmailSource, KnowledgeDirSource, KnowledgePipline
|
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
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import logging
|
|||||||
from .agent import AgentPrompt
|
from .agent import AgentPrompt
|
||||||
from .compute_kernel import ComputeKernel
|
from .compute_kernel import ComputeKernel
|
||||||
from .storage import AIStorage
|
from .storage import AIStorage
|
||||||
|
from .environment import Environment
|
||||||
|
from .ai_function import SimpleAIFunction
|
||||||
from knowledge import *
|
from knowledge import *
|
||||||
|
|
||||||
|
|
||||||
@@ -160,23 +162,10 @@ class KnowledgeBase:
|
|||||||
async def insert_object(self, object: KnowledgeObject):
|
async def insert_object(self, object: KnowledgeObject):
|
||||||
self.store.get_object_store().put_object(object.calculate_id(), object.encode())
|
self.store.get_object_store().put_object(object.calculate_id(), object.encode())
|
||||||
await self.__do_embedding(object)
|
await self.__do_embedding(object)
|
||||||
|
|
||||||
async def query_prompt(self, prompt: AgentPrompt):
|
async def query_objects(self, tokens: str) -> [ObjectID]:
|
||||||
logging.info(f"query_prompt: {prompt}")
|
vector = await self.compute_kernel.do_text_embedding(tokens, self._default_text_model)
|
||||||
objects = await self.query_objects(prompt)
|
return await self.store.get_vector_store(self._default_text_model).query(vector, 10)
|
||||||
knowledge_prompt = self.prompt_from_objects(objects)
|
|
||||||
logging.info(f"prompt_from_objects result: {knowledge_prompt.as_str()}")
|
|
||||||
|
|
||||||
return knowledge_prompt
|
|
||||||
|
|
||||||
async def query_objects(self, prompt: AgentPrompt) -> [ObjectID]:
|
|
||||||
results = []
|
|
||||||
for msg in prompt.messages:
|
|
||||||
if msg["role"] == "user":
|
|
||||||
vector = await self.compute_kernel.do_text_embedding(msg["content"], self._default_text_model)
|
|
||||||
object_ids = await self.store.get_vector_store(self._default_text_model).query(vector, 10)
|
|
||||||
results.extend(object_ids)
|
|
||||||
return results
|
|
||||||
|
|
||||||
def __load_object(self, object_id: ObjectID) -> KnowledgeObject:
|
def __load_object(self, object_id: ObjectID) -> KnowledgeObject:
|
||||||
if object_id.get_object_type() == ObjectType.Document:
|
if object_id.get_object_type() == ObjectType.Document:
|
||||||
@@ -193,7 +182,7 @@ class KnowledgeBase:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def prompt_from_objects(self, object_ids: [ObjectID]) -> AgentPrompt:
|
def tokens_from_objects(self, object_ids: [ObjectID]) -> list[str]:
|
||||||
results = dict()
|
results = dict()
|
||||||
for object_id in object_ids:
|
for object_id in object_ids:
|
||||||
parents = self.store.get_relation_store().get_related_root_objects(object_id)
|
parents = self.store.get_relation_store().get_related_root_objects(object_id)
|
||||||
@@ -237,12 +226,24 @@ class KnowledgeBase:
|
|||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
content += json.dumps(result_desc)
|
content += json.dumps(result_desc)
|
||||||
content += ".\n"
|
content += ".\n"
|
||||||
|
|
||||||
prompt = AgentPrompt()
|
return content
|
||||||
prompt.messages.append({"role": "user", "content": content})
|
|
||||||
|
|
||||||
return prompt
|
|
||||||
|
|
||||||
|
|
||||||
|
class KnowledgeEnvironment(Environment):
|
||||||
|
def __init__(self, env_id: str) -> None:
|
||||||
|
super().__init__(env_id)
|
||||||
|
|
||||||
|
query_param = {
|
||||||
|
"tokens": "tokens to query",
|
||||||
|
"index": "index of query result"
|
||||||
|
}
|
||||||
|
self.add_ai_function(SimpleAIFunction("query_knowledge",
|
||||||
|
"vector query content from local knowledge base",
|
||||||
|
self._query,
|
||||||
|
query_param))
|
||||||
|
|
||||||
|
async def _query(tokens: str, index: int):
|
||||||
|
object_ids = await KnowledgeBase().query_objects(tokens)
|
||||||
|
KnowledgeBase().tokens_from_objects(object_ids)
|
||||||
@@ -24,8 +24,7 @@ directory = os.path.dirname(__file__)
|
|||||||
sys.path.append(directory + '/../../')
|
sys.path.append(directory + '/../../')
|
||||||
|
|
||||||
|
|
||||||
from aios_kernel import AIOS_Version,AgentMsgType,UserConfigItem,AIStorage,Workflow,AIAgent,AgentMsg,AgentMsgStatus,ComputeKernel,OpenAI_ComputeNode,AIBus,AIChatSession,AgentTunnel,TelegramTunnel,CalenderEnvironment,Environment,EmailTunnel,LocalLlama_ComputeNode,Local_Stability_ComputeNode,Stability_ComputeNode,PaintEnvironment
|
|
||||||
from aios_kernel import ContactManager,Contact
|
|
||||||
import proxy
|
import proxy
|
||||||
from aios_kernel import *
|
from aios_kernel import *
|
||||||
|
|
||||||
@@ -114,6 +113,10 @@ class AIOS_Shell:
|
|||||||
|
|
||||||
cm.add_contact(self.username,owenr)
|
cm.add_contact(self.username,owenr)
|
||||||
|
|
||||||
|
|
||||||
|
knowledge_env = KnowledgeEnvironment("knowledge")
|
||||||
|
Environment.set_env_by_id("knowledge",knowledge_env)
|
||||||
|
|
||||||
cal_env = CalenderEnvironment("calender")
|
cal_env = CalenderEnvironment("calender")
|
||||||
await cal_env.start()
|
await cal_env.start()
|
||||||
Environment.set_env_by_id("calender",cal_env)
|
Environment.set_env_by_id("calender",cal_env)
|
||||||
|
|||||||
Reference in New Issue
Block a user