Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MVP 0.5.1 Meets Preset Version Goals #74

Merged
merged 219 commits into from
Oct 4, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
219 commits
Select commit Hold shift + click to select a range
9814889
Initial MVP project structs.
waterflier Aug 11, 2023
db93380
Merge pull request #28 from waterflier/main
fiatrete Aug 11, 2023
3d8f6fd
Temporary commit
waterflier Aug 14, 2023
6b39379
complete pkg_system basic design and impl
waterflier Aug 17, 2023
f2c867e
Merge pull request #30 from waterflier/main
fiatrete Aug 18, 2023
814f5cf
complete ai kerne frame code
waterflier Aug 21, 2023
ae09b24
Merge branch 'fiatrete:main' into main
waterflier Aug 21, 2023
760b087
The framework design of the aios kernel has been basically completed,…
waterflier Aug 23, 2023
23963ad
Merge pull request #33 from waterflier/main
fiatrete Aug 23, 2023
5454009
Refactor the code to make it comply with PEP-8 standards:Convert all …
waterflier Aug 23, 2023
1a6cf1a
complete document of sub system package_manager.
waterflier Aug 23, 2023
4a8d81c
knowleadge.drawio
photosssa Aug 24, 2023
ccbef21
framework code has been completed basicly. Through the use of aios_sh…
waterflier Aug 28, 2023
076eeaf
knowleadge.drawio
photosssa Aug 24, 2023
67677ba
objected knowledge base design
photosssa Aug 29, 2023
8ba9f7c
Merge remote-tracking branch 'origin/MVP' into MVP
photosssa Aug 29, 2023
a796086
objected knowledge base implement for email code structure
photosssa Aug 30, 2023
05d2e4a
1.workflow has reached a state of basic functionality.
waterflier Aug 30, 2023
93b6b8e
Improving aios_shell: We now have a basic, expandable framework, alon…
waterflier Aug 31, 2023
fc0ce3b
knowleadge.drawio
photosssa Aug 24, 2023
aa05a3a
objected knowledge base design
photosssa Aug 29, 2023
aef1547
Merge remote-tracking branch 'origin/MVP' into MVP
photosssa Aug 29, 2023
39eb96f
objected knowledge base implement for email code structure
photosssa Aug 30, 2023
febe28e
Add embeding compute task
photosssa Aug 31, 2023
a6f03ff
Add a service: email spider #43
alexsunxl Aug 31, 2023
5bd9775
Add openai text embedding compute task
photosssa Aug 31, 2023
38f9b0e
Merge remote-tracking branch 'origin/MVP' into MVP
photosssa Aug 31, 2023
cff34c6
knowledge base basic flow
photosssa Aug 31, 2023
27f163d
Merge pull request #44 from alexsunxl/MVP
waterflier Sep 1, 2023
b4990e4
Workflow is almost done.
waterflier Sep 1, 2023
25bba07
1. Build a more simple workflow:math_school
waterflier Sep 1, 2023
1bbdf2e
Add basic enviroment support. Can use env values in prompts right now.
waterflier Sep 5, 2023
3eac598
Add stability node (Text2Img)
glen0125 Sep 7, 2023
188595b
Add chromadb based vector store impl and test case
lurenpluto Sep 5, 2023
1e5b9af
Add chunk relate impl and test case
lurenpluto Sep 7, 2023
e8e3812
Add chunk store and chunk list helper
lurenpluto Sep 8, 2023
0d793bd
Remove some test information
glen0125 Sep 9, 2023
27ed3e2
The argument for is_support should be task_type
glen0125 Sep 9, 2023
15dd600
Merge pull request #45 from glen0125/MVP
waterflier Sep 9, 2023
36476eb
Add object and chunk base impl and test cases
lurenpluto Sep 10, 2023
2761883
Add some core objects impl
lurenpluto Sep 10, 2023
f3cc3f6
Update requirements
lurenpluto Sep 10, 2023
6b45cb9
1.Can use aios_shell from new jarvis telgram bot right now
waterflier Sep 10, 2023
7e1f717
Complete AI Function support for Agent.
waterflier Sep 11, 2023
58c0d74
Add chunk reader impl
lurenpluto Sep 11, 2023
8ffc61f
Save email attachment files in folders
alexsunxl Sep 11, 2023
c6e18f9
Change the code style to the class style
alexsunxl Sep 11, 2023
ddc103a
Add EmailObjectBuilder impl and fix some bugs
lurenpluto Sep 11, 2023
213e7b5
Merge pull request #48 from alexsunxl/MVP
waterflier Sep 11, 2023
8ac6065
embedding email object
photosssa Sep 12, 2023
72257b8
Parse and save img tag in the email body
alexsunxl Sep 12, 2023
6e5beb4
save relationship of objects
photosssa Sep 13, 2023
25fec9a
Merge pull request #49 from alexsunxl/main
waterflier Sep 14, 2023
dd3187f
Provide the local llama service
streetycat Sep 14, 2023
aaf0f15
put email object with nested object not object id
photosssa Sep 14, 2023
9cbf29e
implement object relation store with sqlite
photosssa Sep 14, 2023
a0cb548
prompt from knowledge object
photosssa Sep 14, 2023
c4d9794
Refactor chatsession impl, fix bug.
waterflier Sep 14, 2023
937385f
Improve ObjectID with remove object_type and __eq__ method
lurenpluto Sep 14, 2023
e1bba92
Add object relation store impl and test case
lurenpluto Sep 14, 2023
6ea8372
Refactoring the EmailObject build process
lurenpluto Sep 14, 2023
cbfff71
add whisper speech to text node and google text to speech node
Sep 14, 2023
9c1d672
Merge branch 'fiatrete:MVP' into MVP
wugren Sep 14, 2023
b59af5d
Fix object encode
lurenpluto Sep 15, 2023
ef9ab83
Add tunnel support ,and implment TelegramTunnel. Now we can use teleg…
waterflier Sep 16, 2023
43c7048
1) Add e-mail tunnel support 2) Modify all __new__ to get_instance() …
waterflier Sep 16, 2023
f9269e2
add compute node for llama
streetycat Sep 17, 2023
d7bd287
ignore logs for git
streetycat Sep 17, 2023
0e14ced
Merge branch 'MVP' into MVP
waterflier Sep 18, 2023
4df0b74
Merge pull request #52 from wugren/MVP
waterflier Sep 18, 2023
a20f331
0) Complete Docker build scriptes. 1) Refactor storage dir struct fo…
waterflier Sep 18, 2023
b38aae8
Merge branch 'MVP' into MVP
waterflier Sep 18, 2023
ff0495c
Merge pull request #53 from streetycat/MVP
waterflier Sep 18, 2023
d220f6b
`fix bug from merge
waterflier Sep 18, 2023
805dc88
test prompt from knowledge object
photosssa Sep 18, 2023
441583b
test prompt from knowledge object
photosssa Sep 18, 2023
8f4f778
Merge branch 'MVP' into MVP
waterflier Sep 18, 2023
39008ec
Merge pull request #55 from photosssa/MVP
waterflier Sep 18, 2023
5a26b96
1) Improve aios_shell experience, 2) Add 2 formula build-in agents
waterflier Sep 18, 2023
f2a25b1
schedule same nodes with different weight
streetycat Sep 18, 2023
cecf809
add notes for a method
streetycat Sep 18, 2023
a302527
fix merge bugs.
waterflier Sep 18, 2023
2301bab
Merge pull request #56 from streetycat/MVP
waterflier Sep 18, 2023
0d8ee2a
fix merge bugs
waterflier Sep 18, 2023
874aa98
1) Improve Build-in agent "Tracy Wang" 2) fix bug
waterflier Sep 19, 2023
56d15fd
fix workflow bug, disable local LLM temporary.
waterflier Sep 19, 2023
feca072
Improve UserConfig Model, let aios shell remember last target~
waterflier Sep 19, 2023
298ee73
aios shell support /connect command , connect to a agent though tunne…
waterflier Sep 19, 2023
40e14ee
Fix workflow system prompt bugs.
waterflier Sep 20, 2023
42fe1ad
Modify Agent implement by new system pormpt.
waterflier Sep 20, 2023
e6d7b2b
Improve defualt agent Jarvis, fix some bug.
waterflier Sep 20, 2023
a75857a
Javirs control calender~
waterflier Sep 20, 2023
d5073cc
Jarvis use gpt-3.5
waterflier Sep 20, 2023
c9af0cf
add proxy in config
streetycat Sep 19, 2023
c518415
proxy with authorize
streetycat Sep 20, 2023
0de5534
adapt to new value name
streetycat Sep 20, 2023
ee3f9eb
adapt to new value name
streetycat Sep 20, 2023
fdbb0fc
remove local files
streetycat Sep 20, 2023
1971a93
Add a local sd node
glen0125 Sep 20, 2023
0498a0f
Merge branch 'fiatrete:MVP' into MVP
glen0125 Sep 20, 2023
56002b6
Merge pull request #58 from streetycat/MVP
waterflier Sep 20, 2023
9f01a1a
Merge pull request #59 from glen0125/MVP
waterflier Sep 20, 2023
bde9177
Generator prompt from session histroy base on token limit.
waterflier Sep 20, 2023
080a891
Add feature: Users can load their own downloaded agents or workflows …
waterflier Sep 21, 2023
97f4030
Add feature: Agent/Role enable_function config.
waterflier Sep 21, 2023
3cff241
Add a service: email spider #43
alexsunxl Aug 31, 2023
dbb1ab4
The argument for is_support should be task_type
glen0125 Sep 9, 2023
f2b4e53
Merge pull request #44 from alexsunxl/MVP
waterflier Sep 1, 2023
7265e3f
Merge pull request #45 from glen0125/MVP
waterflier Sep 9, 2023
f4933b8
add compute node for llama
streetycat Sep 17, 2023
cd436f4
ignore logs for git
streetycat Sep 17, 2023
acc0495
add whisper speech to text node and google text to speech node
Sep 14, 2023
6b487cb
Merge branch 'MVP' into MVP
waterflier Sep 18, 2023
7cefcd5
Merge pull request #52 from wugren/MVP
waterflier Sep 18, 2023
3672521
Merge pull request #53 from streetycat/MVP
waterflier Sep 18, 2023
d1b8795
objected knowledge base implement for email code structure
photosssa Aug 30, 2023
071452f
Add embeding compute task
photosssa Aug 31, 2023
0eebdf6
Add openai text embedding compute task
photosssa Aug 31, 2023
10d6f2f
knowledge base basic flow
photosssa Aug 31, 2023
218ee44
Add chromadb based vector store impl and test case
lurenpluto Sep 5, 2023
3721f4a
test prompt from knowledge object
photosssa Sep 18, 2023
edbd1c4
add knowledge pipeline
photosssa Sep 20, 2023
a0a45b8
shell knowledge commands
photosssa Sep 21, 2023
46165fd
Merge pull request #60 from photosssa/MVP
waterflier Sep 21, 2023
03036c7
fix bug
waterflier Sep 21, 2023
f7a47a0
Jarvis can query user knowlege base!
waterflier Sep 21, 2023
270debe
Add feature: Contact manager
waterflier Sep 22, 2023
4e45130
story maker
Sep 21, 2023
5c2dd13
Fix story maker bug
Sep 21, 2023
b8345ec
Modify story_maker prompt word
Sep 22, 2023
b195e6a
add google application credentials
Sep 22, 2023
001482e
Modify agent name
Sep 22, 2023
ad12e79
Add linux_admin agent, funny~
waterflier Sep 22, 2023
0d55600
fix bug
waterflier Sep 22, 2023
3061e00
Merge branch 'MVP' into MVP
waterflier Sep 22, 2023
add4357
Merge pull request #62 from wugren/MVP
waterflier Sep 22, 2023
c289c81
fix bugs
waterflier Sep 23, 2023
85259ca
Add paint function for agent David
glen0125 Sep 23, 2023
2be2ef3
Update code & pass test
glen0125 Sep 23, 2023
2662f85
fix bug
waterflier Sep 23, 2023
5857282
Merge pull request #63 from glen0125/MVP
waterflier Sep 23, 2023
55832c6
Story maker support telegram
Sep 24, 2023
7d4b92d
Merge pull request #64 from wugren/MVP
waterflier Sep 25, 2023
7f11edb
Jarvis can update contract, aios_shell can update contract.
waterflier Sep 26, 2023
b271f88
Add /enable /disable Feature
waterflier Sep 26, 2023
fb76066
Add paint env & test stability api
glen0125 Sep 26, 2023
ad50d6a
Remove test info
glen0125 Sep 26, 2023
6d63c3e
Merge pull request #66 from glen0125/MVP
waterflier Sep 26, 2023
857a7ed
fix bugs~
waterflier Sep 27, 2023
943d0e3
Improved the system's exception handling logic, striving to let users…
waterflier Sep 27, 2023
594901d
fix workflow bug.
waterflier Sep 27, 2023
76636f5
knowledge add email source
photosssa Sep 22, 2023
a7d09cd
Remove useless old code
lurenpluto Sep 25, 2023
fe4d079
Add sentence-transformer local text embedding supports
lurenpluto Sep 25, 2023
22ef7f0
Integration of sentence-transformer local text embedding
lurenpluto Sep 25, 2023
d25f295
Eliminate a bug that caused test cases to fail to execute correctly d…
lurenpluto Sep 25, 2023
8b862c0
Improve chunk relate code and add read test case
lurenpluto Sep 25, 2023
411ab61
impl text splitter with tiktoken
photosssa Sep 26, 2023
cf2d917
default text embedding with local node
photosssa Sep 26, 2023
f472689
modify knowledge email source
photosssa Sep 26, 2023
5f346b1
Add sentence-transformer local text embedding supports
lurenpluto Sep 25, 2023
451ab5e
Add local image embedding impls
lurenpluto Sep 26, 2023
1ff3165
Integration local image embedding to aiox shell
lurenpluto Sep 26, 2023
a5e5839
add agent Mia
photosssa Sep 27, 2023
01f0528
fix queue compute node
photosssa Sep 27, 2023
e13e31a
fix queue compute node
photosssa Sep 27, 2023
87f82ec
Add image embedding task and test case
lurenpluto Sep 27, 2023
e858978
Fix text embedding model load error
lurenpluto Sep 27, 2023
babb0a7
Return result code from sd node
glen0125 Sep 27, 2023
5b6de8b
local text embedding ok
photosssa Sep 27, 2023
5146bc1
Add chat history limit for Agent and Role.
waterflier Sep 27, 2023
030e4c4
Adjust the directory structure to prepare for merging into Master.
waterflier Sep 27, 2023
969d595
Merge pull request #67 from glen0125/MVP
waterflier Sep 27, 2023
da6cb5d
Compete "Quick Start"
waterflier Sep 27, 2023
28e6c60
fix document format error.
waterflier Sep 27, 2023
f3c4511
Update QuickStart zh-CN.md
lllucy4901 Sep 27, 2023
3a83783
Add chat history limit for Agent and Role.
waterflier Sep 27, 2023
2938a54
Return result code from sd node
glen0125 Sep 27, 2023
29f83a6
Adjust the directory structure to prepare for merging into Master.
waterflier Sep 27, 2023
b2fc804
Merge pull request #67 from glen0125/MVP
waterflier Sep 27, 2023
98d1298
Compete "Quick Start"
waterflier Sep 27, 2023
1de94a4
fix document format error.
waterflier Sep 27, 2023
f079763
Add sentence-transformer local text embedding supports
lurenpluto Sep 25, 2023
7f3687f
Integration local image embedding to aiox shell
lurenpluto Sep 26, 2023
7f81e25
Add image embedding task and test case
lurenpluto Sep 27, 2023
ecda804
remove /knowledge query command
photosssa Sep 28, 2023
175c3ee
Merge branch 'MVP' into MVP
waterflier Sep 28, 2023
e0c4eb5
Merge pull request #68 from photosssa/MVP
waterflier Sep 28, 2023
7b5c010
local llama
streetycat Sep 28, 2023
97d69e4
fix bugs
streetycat Sep 28, 2023
56c0202
add image insert/query in knowledge base
photosssa Sep 28, 2023
ff4875d
add default knowledge source dir
photosssa Sep 28, 2023
4f6b04f
local llama
streetycat Sep 28, 2023
193c627
rebase to main
streetycat Sep 28, 2023
2bfa099
remove await for synchronous method
streetycat Sep 28, 2023
026bfc1
send image with telegram message
photosssa Sep 28, 2023
861096f
recover the for the agent
streetycat Sep 28, 2023
14a7647
Merge pull request #69 from photosssa/MVP
waterflier Sep 28, 2023
8ccab13
Merge pull request #70 from streetycat/MVP
waterflier Sep 28, 2023
fb31feb
Merge pull request #71 from lllucy4901/patch-1
waterflier Sep 28, 2023
b2f9ddc
Prepare for release.
waterflier Sep 28, 2023
fc0c91d
fix merge bug.
waterflier Sep 28, 2023
a889761
Update README.md
waterflier Sep 29, 2023
0fd1333
Update README.md
waterflier Sep 29, 2023
b1b1b4f
Update README.md
waterflier Sep 29, 2023
c644c2e
fix bug
waterflier Sep 29, 2023
ef36bc0
fix bug
waterflier Sep 29, 2023
b6a06c4
fix bug
waterflier Sep 29, 2023
bc2488f
add query knowledge object in shell
photosssa Sep 29, 2023
f332639
Merge pull request #72 from photosssa/MVP
waterflier Sep 29, 2023
1cef532
fix bug and improve script
waterflier Sep 29, 2023
99f6f12
Merge Llama support for release.
waterflier Sep 29, 2023
55b2701
fix tg tunnel bug.
waterflier Sep 30, 2023
a3c1ef3
update doc
streetycat Sep 30, 2023
431f0d4
Fix bug: Agent process message correctly in Telegeram Gorup
waterflier Oct 1, 2023
ae99571
Merge pull request #73 from streetycat/MVP
waterflier Oct 1, 2023
9932b55
Implement simple "Agent Think Frame" , Tracy can do teach summary now.
waterflier Oct 1, 2023
64bbfa2
Improve “QuickStart.md”
waterflier Oct 3, 2023
a92b3f1
Fix format issue
waterflier Oct 3, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix merge bug.
  • Loading branch information
waterflier committed Sep 28, 2023
commit fc0c91d942fe9dbfc8ca358516ac2cf7d62c2a2c
8 changes: 6 additions & 2 deletions src/aios_kernel/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,9 @@ async def _execute_func(self,inenr_func_call_node:dict,prompt:AgentPrompt,org_ms
org_msg.inner_call_chain.append(ineternal_call_record)

if stack_limit > 0:
inner_func_call_node = task_result.result_message.get("function_call")
result_message = task_result.result.get("message")
if result_message:
inner_func_call_node = result_message.get("function_call")

if inner_func_call_node:
return await self._execute_func(inner_func_call_node,prompt,org_msg,stack_limit-1)
Expand Down Expand Up @@ -395,7 +397,9 @@ async def _process_msg(self,msg:AgentMsg) -> AgentMsg:

final_result = task_result.result_str

inner_func_call_node = task_result.result_message.get("function_call")
result_message = task_result.result.get("message")
if result_message:
inner_func_call_node = result_message.get("function_call")
if inner_func_call_node:
#TODO to save more token ,can i use msg_prompt?
final_result,error_code = await self._execute_func(inner_func_call_node,prompt,msg)
Expand Down
23 changes: 12 additions & 11 deletions src/aios_kernel/compute_kernel.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ def llm_completion(self, prompt: AgentPrompt, mode_name: Optional[str] = None, m
self.run(task_req)
return task_req

async def _send_task(self,task_req:ComputeTask)->ComputeTaskResult:
async def _wait_task(self,task_req:ComputeTask)->ComputeTaskResult:
async def check_timer():
check_times = 0
while True:
Expand Down Expand Up @@ -135,7 +135,7 @@ async def check_timer():

async def do_llm_completion(self, prompt: AgentPrompt, mode_name: Optional[str] = None, max_token: int = 0, inner_functions = None) -> str:
task_req = self.llm_completion(prompt, mode_name, max_token,inner_functions)
return await self._send_task(task_req)
return await self._wait_task(task_req)


def text_embedding(self,input:str,model_name:Optional[str] = None):
Expand All @@ -146,12 +146,13 @@ def text_embedding(self,input:str,model_name:Optional[str] = None):

async def do_text_embedding(self,input:str,model_name:Optional[str] = None) -> [float]:
task_req = self.text_embedding(input,model_name)
task_result = await self._send_task(task_req)
task_result = await self._wait_task(task_req)

if task_req.state == ComputeTaskState.DONE:
return task_result.result_str

return "error!"
return task_result.result.get("content")
else:
logging.warning(f"do_text_embedding error: {task_req.error_str},input: {input}")
return None

def image_embedding(self,input:ObjectID,model_name:Optional[str] = None):
task_req = ComputeTask()
Expand All @@ -161,12 +162,12 @@ def image_embedding(self,input:ObjectID,model_name:Optional[str] = None):

async def do_image_embedding(self,input:ObjectID,model_name:Optional[str] = None) -> [float]:
task_req = self.image_embedding(input,model_name)
task_result = await self._send_task(task_req)
task_result = await self._wait_task(task_req)

if task_req.state == ComputeTaskState.DONE:
return task_result.result_str
return task_result.result.get("content")

return "error!"
return None

async def do_text_to_speech(self,
input:str,
Expand All @@ -185,7 +186,7 @@ async def do_text_to_speech(self,
task_req.task_type = ComputeTaskType.TEXT_2_VOICE
self.run(task_req)

task_result = await self._send_task(task_req)
task_result = await self._wait_task(task_req)

if task_req.state == ComputeTaskState.DONE:
return task_result.result
Expand All @@ -199,7 +200,7 @@ def text_2_image(self, prompt:str, model_name:Optional[str] = None, negative_pro

async def do_text_2_image(self, prompt:str, model_name:Optional[str] = None, negative_prompt = None) -> ComputeTaskResult:
task = self.text_2_image(prompt,model_name, negative_prompt)
task = await self._send_task(task)
task = await self._wait_task(task)

return task.result
# if task_req.state == ComputeTaskState.DONE:
Expand Down
4 changes: 3 additions & 1 deletion src/aios_kernel/compute_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,9 @@ def __init__(self) -> None:
self.error_str : str = None
self.result_code: int = 0
self.result_str: str = None # easy to use,can read from result
self.result_message: dict = {}

self.result : dict = {}

self.result_refers: dict = {}
self.pading_data: bytearray = None

Expand Down
6 changes: 4 additions & 2 deletions src/aios_kernel/knowledge_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ async def __embedding_document(self, document: DocumentObject):

text = chunk.read().decode("utf-8")
vector = await self.compute_kernel.do_text_embedding(text, self._default_text_model)
await self.store.get_vector_store(self._default_text_model).insert(vector, chunk_id)
if vector:
await self.store.get_vector_store(self._default_text_model).insert(vector, chunk_id)

async def __embedding_image(self, image: ImageObject):
# desc = {}
Expand All @@ -45,7 +46,8 @@ async def __embedding_image(self, image: ImageObject):
# desc["tags"] = image.get_tags()
# vector = await self.compute_kernel.do_text_embedding(json.dumps(desc), self._default_text_model)
vector = await self.compute_kernel.do_image_embedding(image.calculate_id(), self._default_image_model)
await self.store.get_vector_store(self._default_image_model).insert(vector, image.calculate_id())
if vector:
await self.store.get_vector_store(self._default_image_model).insert(vector, image.calculate_id())

async def __embedding_video(self, vedio: VideoObject):
desc = {}
Expand Down
13 changes: 10 additions & 3 deletions src/aios_kernel/local_llama_compute_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,11 @@ def __init__(self, url: str, model_name: str):
self.url = url
self.model_name = model_name

async def execute_task(self, task: ComputeTask, result: ComputeTaskResult):
async def execute_task(self, task: ComputeTask)->ComputeTaskResult:
result = ComputeTaskResult()
result.result_code = ComputeTaskResultCode.ERROR
result.set_from_task(task)
result.worker_id = self.node_id
match task.task_type:
case ComputeTaskType.TEXT_EMBEDDING:
model_name = task.params["model_name"]
Expand Down Expand Up @@ -56,7 +60,9 @@ async def execute_task(self, task: ComputeTask, result: ComputeTaskResult):
result.result_code = ComputeTaskResultCode.ERROR
task.error_str = f"ComputeTask's TaskType : {task.task_type} not support!"
result.error_str = f"ComputeTask's TaskType : {task.task_type} not support!"
return None
return result

return result

async def initial(self) -> bool:
return True
Expand Down Expand Up @@ -145,7 +151,8 @@ def completion(self, task: ComputeTask, result: ComputeTaskResult):

result.result_code = ComputeTaskResultCode.OK
result.result_str = resp["choices"][0]["message"]["content"]
result.result_message = resp["choices"][0]["message"]
result.result["message"] = resp["choices"][0]["message"]

if token_usage:
result.result_refers["token_usage"] = token_usage

Expand Down
93 changes: 30 additions & 63 deletions src/aios_kernel/local_st_compute_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,12 @@
from typing import Union
from PIL import Image
import io
from .compute_task import ComputeTask, ComputeTaskState, ComputeTaskType
from .compute_task import ComputeTask, ComputeTaskState, ComputeTaskType,ComputeTaskResult,ComputeTaskResultCode
from .queue_compute_node import Queue_ComputeNode
from knowledge import ObjectID

logger = logging.getLogger(__name__)



class LocalSentenceTransformer_Text_ComputeNode(Queue_ComputeNode):
# For valid pretrained models, see https://www.sbert.net/docs/pretrained_models.html
def __init__(self, model_name: str = "all-MiniLM-L6-v2"):
Expand All @@ -39,18 +37,11 @@ def initial(self) -> bool:
self.start()
return True

async def execute_task(
self, task: ComputeTask
) -> {
"task_type": str,
"content": str,
"message": str,
"state": ComputeTaskState,
"error": {
"code": int,
"message": str,
},
}:
async def execute_task(self, task: ComputeTask) :
result = ComputeTaskResult()
result.result_code = ComputeTaskResultCode.ERROR
result.set_from_task(task)
result.worker_id = self.node_id
try:
# logger.debug(f"LocalSentenceTransformer_Text_ComputeNode task: {task}")
if task.task_type == ComputeTaskType.TEXT_EMBEDDING:
Expand All @@ -60,25 +51,19 @@ async def execute_task(
)
sentence_embeddings = self.model.encode(input, show_progress_bar=False).tolist()
# logger.debug(f"LocalSentenceTransformer_Text_ComputeNode task sentence_embeddings: {sentence_embeddings}")
return {
"state": ComputeTaskState.DONE,
"content": sentence_embeddings,
"message": None,
}
result.result_code = ComputeTaskResultCode.OK
result.result["content"] = sentence_embeddings

else:
return {
"state": ComputeTaskState.ERROR,
"error": {"code": -1, "message": "unsupport embedding task type"},
}
result.error_str = f"unsupport embedding task type: {task.task_type}"
except Exception as err:
import traceback

logger.error(f"{traceback.format_exc()}, error: {err}")
result.error_str = f"{traceback.format_exc()}, error: {err}"

return result

return {
"state": ComputeTaskState.ERROR,
"error": {"code": -1, "message": "unknown exception: " + str(err)},
}

def display(self) -> str:
return f"LocalSentenceTransformer_Text_ComputeNode: {self.node_id}, {self.model_name}"
Expand Down Expand Up @@ -170,16 +155,11 @@ def _load_image(self, source: Union[ObjectID, bytes]) -> Optional[Image]:

async def execute_task(
self, task: ComputeTask
) -> {
"task_type": str,
"content": str,
"message": str,
"state": ComputeTaskState,
"error": {
"code": int,
"message": str,
},
}:
) -> ComputeTaskResult:
result = ComputeTaskResult()
result.result_code = ComputeTaskResultCode.ERROR
result.set_from_task(task)
result.worker_id = self.node_id
try:
# logger.debug(f"LocalSentenceTransformer_Text_ComputeNode task: {task}")
if task.task_type == ComputeTaskType.TEXT_EMBEDDING:
Expand All @@ -189,11 +169,9 @@ async def execute_task(
)
sentence_embeddings = self.multi_model.encode(input, show_progress_bar=False).tolist()
# logger.debug(f"LocalSentenceTransformer_Text_ComputeNode task sentence_embeddings: {sentence_embeddings}")
return {
"state": ComputeTaskState.DONE,
"content": sentence_embeddings,
"message": None,
}
result.result_code = ComputeTaskResultCode.OK
result.result["content"] = sentence_embeddings

elif task.task_type == ComputeTaskType.IMAGE_EMBEDDING:
input = task.params["input"]
logger.debug(
Expand All @@ -202,33 +180,22 @@ async def execute_task(

img = self._load_image(input)
if img is None:
return {
"state": ComputeTaskState.ERROR,
"error": {"code": -1, "message": "load image failed"},
}
result.error_str = f"load image failed: {input}"
return result

sentence_embeddings = self.model.encode(img, show_progress_bar=False).tolist()

# logger.debug(f"LocalSentenceTransformer_Text_ComputeNode task sentence_embeddings: {sentence_embeddings}")
return {
"state": ComputeTaskState.DONE,
"content": sentence_embeddings,
"message": None,
}
result.result_code = ComputeTaskResultCode.OK
result.result["content"] = sentence_embeddings
else:
return {
"state": ComputeTaskState.ERROR,
"error": {"code": -1, "message": "unsupport embedding task type"},
}
result.error_str = f"unsupport embedding task type: {task.task_type}"
except Exception as err:
import traceback

logger.error(f"{traceback.format_exc()}, error: {err}")

return {
"state": ComputeTaskState.ERROR,
"error": {"code": -1, "message": "unknown exception: " + str(err)},
}
result.error_str = f"{traceback.format_exc()}, error: {err}"


return result

def display(self) -> str:
return f"LocalSentenceTransformer_Image_ComputeNode: {self.node_id}, {self.model_name}"
Expand Down
3 changes: 2 additions & 1 deletion src/aios_kernel/open_ai_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,8 @@ def _run_task(self, task: ComputeTask):
result.result_code = ComputeTaskResultCode.OK
result.worker_id = self.node_id
result.result_str = resp["choices"][0]["message"]["content"]
result.result_message = resp["choices"][0]["message"]
result.result["message"] = resp["choices"][0]["message"]

if token_usage:
result.result_refers["token_usage"] = token_usage
logger.info(f"openai success response: {result.result_str}")
Expand Down
17 changes: 12 additions & 5 deletions src/aios_kernel/queue_compute_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def __init__(self):
self.is_start = False

@abstractmethod
async def execute_task(self, task: ComputeTask, result: ComputeTaskResult):
async def execute_task(self, task: ComputeTask)->ComputeTaskResult:
pass

async def push_task(self, task: ComputeTask, proiority: int = 0):
Expand All @@ -29,15 +29,22 @@ async def remove_task(self, task_id: str):
async def _run_task(self, task: ComputeTask):
task.state = ComputeTaskState.RUNNING


result = ComputeTaskResult()
result.result_code = ComputeTaskResultCode.ERROR
result.set_from_task(task)
result.worker_id = self.node_id

await self.execute_task(task, result)

return result
real_result = await self.execute_task(task)

if real_result:
if real_result.result_code == ComputeTaskResultCode.OK:
task.state = ComputeTaskState.DONE
else:
task.state = ComputeTaskState.ERROR
return real_result
else:
task.state = ComputeTaskState.ERROR
return result

def start(self):
if self.is_start is True:
Expand Down
9 changes: 7 additions & 2 deletions src/aios_kernel/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -425,7 +425,10 @@ async def _role_execute_func(self,the_role:AIRole,inenr_func_call_node:dict,prom
ineternal_call_record.done_time = time.time()
org_msg.inner_call_chain.append(ineternal_call_record)
if stack_limit > 0:
inner_func_call_node = task_result.result_message.get("function_call")
result_message = task_result.result.get("message")
if result_message:
inner_func_call_node = result_message.get("function_call")

if inner_func_call_node:
return await self._role_execute_func(the_role,inner_func_call_node,prompt,org_msg,stack_limit-1)
else:
Expand Down Expand Up @@ -466,7 +469,9 @@ async def _do_process_msg():
result_str = task_result.result_str
logger.info(f"{the_role.role_id} process {msg.sender}:{msg.body},llm str is :{result_str}")

inner_func_call_node = task_result.result_message.get("function_call")
result_message = task_result.result.get("message")
if result_message:
inner_func_call_node = result_message.get("function_call")

if inner_func_call_node:
#TODO to save more token ,can i use msg_prompt?
Expand Down
3 changes: 2 additions & 1 deletion src/knowledge/vector/chroma_store.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ def __init__(self, root_dir, model_name: str) -> None:
self.collection = collection

async def insert(self, vector: [float], id: ObjectID):
logging.info(f"will insert vector: {vector} id: {str(id)}")
logging.info(f"will insert vector: {len(vector)} id: {str(id)}")
logging.debug(f"vector is {vector}")
self.collection.add(
embeddings=vector,
ids=str(id),
Expand Down