diff --git a/build_all_in_one.sh b/build_all_in_one.sh index d1eb62b..b6040c4 100644 --- a/build_all_in_one.sh +++ b/build_all_in_one.sh @@ -1,5 +1,3 @@ #!/usr/bin/bash - -pipreqs ./src --force # Build the docker image docker build -t aios . diff --git a/src/aios_kernel/compute_task.py b/src/aios_kernel/compute_task.py index 3b278b4..1433379 100644 --- a/src/aios_kernel/compute_task.py +++ b/src/aios_kernel/compute_task.py @@ -12,12 +12,13 @@ class ComputeTaskState(Enum): PENDING = 4 class ComputeTaskType(Enum): - NONE = -1 - LLM_COMPLETION = 0 - TEXT_2_IMAGE = 1 - IMAGE_2_IMAGE = 2 - VOICE_2_TEXT = 3 - TEXT_2_VOICE = 4 + NONE = "None" + LLM_COMPLETION = "llm_completion" + TEXT_2_IMAGE = "text_2_image" + IMAGE_2_IMAGE = "image_2_image" + VOICE_2_TEXT = "voice_2_text" + TEXT_2_VOICE = "text_2_voice" + TEXT_EMBEDDING ="text_embedding" class ComputeTask: @@ -54,7 +55,7 @@ class ComputeTask: self.params["inner_functions"] = inner_functions def set_text_embedding_params(self, input, model_name=None, callchain_id = None): - self.task_type = "text_embedding" + self.task_type = ComputeTaskType.TEXT_EMBEDDING self.create_time = time.time() self.task_id = uuid.uuid4().hex self.callchain_id = callchain_id diff --git a/src/aios_kernel/open_ai_node.py b/src/aios_kernel/open_ai_node.py index fa1f30a..eaeb23d 100644 --- a/src/aios_kernel/open_ai_node.py +++ b/src/aios_kernel/open_ai_node.py @@ -59,85 +59,84 @@ class OpenAI_ComputeNode(ComputeNode): def _run_task(self, task: ComputeTask): task.state = ComputeTaskState.RUNNING - if task.task_type == "text_embedding": - model_name = task.params["model_name"] - input = task.params["input"] - logger.info(f"call openai {model_name} input: {input}") + match task.task_type: + case ComputeTaskType.TEXT_EMBEDDING: + model_name = task.params["model_name"] + input = task.params["input"] + logger.info(f"call openai {model_name} input: {input}") - resp = openai.Embedding.create(model=model_name, - input=input) - - # resp = { - # "object": "list", - # "data": [ - # { - # "object": "embedding", - # "index": 0, - # "embedding": [ - # -0.00930514745414257, - # 0.00765434792265296, - # -0.007167573552578688, - # -0.012373941019177437, - # -0.04884673282504082 - # ]}] - # } + resp = openai.Embedding.create(model=model_name, + input=input) + + # resp = { + # "object": "list", + # "data": [ + # { + # "object": "embedding", + # "index": 0, + # "embedding": [ + # -0.00930514745414257, + # 0.00765434792265296, + # -0.007167573552578688, + # -0.012373941019177437, + # -0.04884673282504082 + # ]}] + # } - logger.info(f"openai response: {resp}") + logger.info(f"openai response: {resp}") - result = ComputeTaskResult() - result.set_from_task(task) - result.worker_id = self.node_id - result.result = resp["data"][0]["embedding"] + result = ComputeTaskResult() + result.set_from_task(task) + result.worker_id = self.node_id + result.result = resp["data"][0]["embedding"] - return result - - if task.task_type == "llm_completion": - mode_name = task.params["model_name"] - # max_token_size = task.params["max_token_size"] - prompts = task.params["prompts"] + return result + case ComputeTaskType.LLM_COMPLETION: + mode_name = task.params["model_name"] + prompts = task.params["prompts"] + max_token_size = task.params.get("max_token_size") + llm_inner_functions = task.params["inner_functions"] + if max_token_size is None: + max_token_size = 4000 + + logger.info(f"call openai {mode_name} prompts: {prompts}") - mode_name = task.params["model_name"] - # max_token_size = task.params["max_token_size"] - prompts = task.params["prompts"] - - - logger.info(f"call openai {mode_name} prompts: {prompts}") - - if task.params.get("inner_functions") is None: - resp = openai.ChatCompletion.create(model=mode_name, - messages=prompts, - max_tokens=task.params["max_token_size"], - temperature=0.7) - else: - resp = openai.ChatCompletion.create(model=mode_name, + if llm_inner_functions is None: + resp = openai.ChatCompletion.create(model=mode_name, messages=prompts, - functions=task.params["inner_functions"], - max_tokens=task.params["max_token_size"], - temperature=0.7) # TODO: add temperature to task params? + max_tokens=max_token_size, + temperature=0.7) + else: + resp = openai.ChatCompletion.create(model=mode_name, + messages=prompts, + functions=llm_inner_functions, + max_tokens=max_token_size, + temperature=0.7) # TODO: add temperature to task params? - - logger.info(f"openai response: {resp}") + + logger.info(f"openai response: {resp}") - result = ComputeTaskResult() - result.set_from_task(task) + result = ComputeTaskResult() + result.set_from_task(task) - status_code = resp["choices"][0]["finish_reason"] - match status_code: - case "function_call": - task.state = ComputeTaskState.DONE - case "stop": - task.state = ComputeTaskState.DONE - case _: - task.state = ComputeTaskState.ERROR - task.error_str = f"The status code was {status_code}." - return None - - result.worker_id = self.node_id - result.result_str = resp["choices"][0]["message"]["content"] - result.result_message = resp["choices"][0]["message"] - - return result + status_code = resp["choices"][0]["finish_reason"] + match status_code: + case "function_call": + task.state = ComputeTaskState.DONE + case "stop": + task.state = ComputeTaskState.DONE + case _: + task.state = ComputeTaskState.ERROR + task.error_str = f"The status code was {status_code}." + return None + result.worker_id = self.node_id + result.result_str = resp["choices"][0]["message"]["content"] + result.result_message = resp["choices"][0]["message"] + return result + case _: + task.state = ComputeTaskState.ERROR + return None def start(self): if self.is_start is True: @@ -167,9 +166,9 @@ class OpenAI_ComputeNode(ComputeNode): def is_support(self, task: ComputeTask) -> bool: if task.task_type == ComputeTaskType.LLM_COMPLETION: - if (not task.params["model_name"] or task.params["model_name"] == "gpt-4-0613") + if not task.params["model_name"] or task.params["model_name"] == "gpt-4-0613": return True - if task.task_type == "text_embedding": + if task.task_type == ComputeTaskType.TEXT_EMBEDDING: if task.params["model_name"] == "text-embedding-ada-002": return True return False diff --git a/src/requirements.txt b/src/requirements.txt index 8ade250..b9e630e 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -1,7 +1,4 @@ - chromadb==0.4 -openai==0.28 -toml==0.10 moviepy==1.0 base58==2.1 base36==0.1 @@ -11,14 +8,14 @@ aioimaplib==1.0.1 aiosmtplib==2.0.2 beautifulsoup4==4.12.2 mail_parser==3.15.0 -openai==0.27.10 -Pillow prompt_toolkit==3.0.39 -protobuf pydantic==1.10.11 python-telegram-bot==20.5 Requests==2.31.0 +protobuf stability_sdk -toml==0.10.2 - +toml +base58 google-cloud-texttospeech +openai +Pillow diff --git a/src/service/aios_shell/aios_shell.py b/src/service/aios_shell/aios_shell.py index 0e82363..d71ae7d 100644 --- a/src/service/aios_shell/aios_shell.py +++ b/src/service/aios_shell/aios_shell.py @@ -102,7 +102,7 @@ class AIOS_Shell: EmailTunnel.register_to_loader() user_data_dir = AIStorage.get_instance().get_myai_dir() - tunnels_config_path = os.path.abspath(f"{user_data_dir}/tunnels.cfg.toml") + tunnels_config_path = os.path.abspath(f"{user_data_dir}/etc/tunnels.cfg.toml") tunnel_config = None try: tunnel_config = toml.load(tunnels_config_path)