Skip to content

Commit 2be6a00

Browse files
author
LittleMouse
committed
[update] add llm-openai_api
1 parent 171b1ef commit 2be6a00

4 files changed

Lines changed: 89 additions & 0 deletions

File tree

projects/llm_framework/main_openai_api/Kconfig

Whitespace-only changes.
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import os
2+
3+
Import('env')
4+
with open(env['PROJECT_TOOL_S']) as f:
5+
exec(f.read())
6+
7+
# env.Append(CXXFLAGS=['-O3', '-fopenmp', '-std=c++17'])
8+
SRCS = append_srcs_dir(ADir('src'))
9+
INCLUDE = [ADir('include'), ADir('.')]
10+
PRIVATE_INCLUDE = []
11+
REQUIREMENTS = ['pthread']
12+
STATIC_LIB = []
13+
DYNAMIC_LIB = []
14+
DEFINITIONS = []
15+
DEFINITIONS_PRIVATE = []
16+
LDFLAGS = []
17+
LINK_SEARCH_PATH = []
18+
STATIC_FILES = []
19+
20+
down_path = check_wget_down("https://github.com/Abandon-ht/ModuleLLM-OpenAI-Plugin/archive/1077efbe201ea3f29517f5ce4a0cfc3b04c25d1d.zip", 'M5Module-LLM_OpenAI_API.zip')
21+
22+
old_dir_name = 'ModuleLLM-OpenAI-Plugin-1077efbe201ea3f29517f5ce4a0cfc3b04c25d1d'
23+
new_dir_name = 'ModuleLLM-OpenAI-Plugin'
24+
25+
old_dir_path = os.path.join(down_path, old_dir_name)
26+
new_dir_path = os.path.join(down_path, new_dir_name)
27+
28+
python_venv = check_wget_down("https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/linux/llm/m5stack_llm-openai-api-python-venv_v1.5.tar.gz", 'm5stack_llm-llm-openai-api-python-venv_v1.5.tar.gz')
29+
30+
31+
if os.path.exists(old_dir_path):
32+
os.rename(old_dir_path, new_dir_path)
33+
34+
DEFINITIONS += ['-O3', '-fopenmp', '-std=c++17']
35+
LDFLAGS+=['-Wl,-rpath=/opt/m5stack/lib', '-Wl,-rpath=/usr/local/m5stack/lib', '-Wl,-rpath=/usr/local/m5stack/lib/gcc-10.3', '-Wl,-rpath=/opt/lib', '-Wl,-rpath=/opt/usr/lib', '-Wl,-rpath=./']
36+
LINK_SEARCH_PATH += [ADir('../static_lib')]
37+
38+
STATIC_FILES += Glob('mode_*.json')
39+
40+
41+
# STATIC_FILES += [os.path.join(down_path, 'M5Module-LLM_OpenAI_API-e3c467b8d8e5e0605b17436a5c5361f9ec1a7e96')]
42+
STATIC_FILES += [new_dir_path]
43+
STATIC_FILES += [os.path.join(python_venv, 'openai-api')]
44+
45+
env['COMPONENTS'].append({'target':'llm_openai_api',
46+
'SRCS':SRCS,
47+
'INCLUDE':INCLUDE,
48+
'PRIVATE_INCLUDE':PRIVATE_INCLUDE,
49+
'REQUIREMENTS':REQUIREMENTS,
50+
'STATIC_LIB':STATIC_LIB,
51+
'DYNAMIC_LIB':DYNAMIC_LIB,
52+
'DEFINITIONS':DEFINITIONS,
53+
'DEFINITIONS_PRIVATE':DEFINITIONS_PRIVATE,
54+
'LDFLAGS':LDFLAGS,
55+
'LINK_SEARCH_PATH':LINK_SEARCH_PATH,
56+
'STATIC_FILES':STATIC_FILES,
57+
'REGISTER':'project'
58+
})
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*/
6+
#include <stdio.h>
7+
#include <unistd.h>
8+
#include <stdlib.h>
9+
10+
int main()
11+
{
12+
setenv("PYTHONPATH", "/opt/m5stack/lib/openai-api/site-packages", 1);
13+
14+
if (access("/opt/m5stack/bin/ModuleLLM-OpenAI-Plugin/api_server.py", F_OK) == 0) {
15+
char *args[] = {(char *)"python3", (char *)"/opt/m5stack/bin/ModuleLLM-OpenAI-Plugin/api_server.py", NULL};
16+
if (execvp("python3", args) == -1) {
17+
perror("execvp");
18+
return 1;
19+
}
20+
}
21+
perror("_tokenizer.py miss");
22+
return 0;
23+
}

projects/llm_framework/tools/llm_pack.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,13 @@ def create_bin_deb(package_name, version, src_folder, revision = 'm5stack1'):
220220
os.makedirs(os.path.join(deb_folder, 'opt/m5stack/bin'), exist_ok = True)
221221
os.makedirs(os.path.join(deb_folder, 'DEBIAN'), exist_ok = True)
222222
# shutil.copytree(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'deb_overlay'), deb_folder)
223+
if package_name == 'llm-openai-api':
224+
m5module_dir = os.path.join(src_folder, 'ModuleLLM-OpenAI-Plugin')
225+
if os.path.exists(m5module_dir):
226+
shutil.copytree(m5module_dir, os.path.join(deb_folder, 'opt/m5stack/bin/ModuleLLM-OpenAI-Plugin'))
227+
openai_api_dir = os.path.join(src_folder, 'openai-api')
228+
if os.path.exists(openai_api_dir):
229+
shutil.copytree(openai_api_dir, os.path.join(deb_folder, 'opt/m5stack/lib/openai-api'))
223230
shutil.copy2(os.path.join(src_folder, package_name.replace("-", "_")), os.path.join(deb_folder, 'opt/m5stack/bin', package_name.replace("-", "_")))
224231
ext_scripts_files = glob.glob(os.path.join(src_folder, package_name + "_*"))
225232
if ext_scripts_files:
@@ -318,6 +325,7 @@ def create_bin_deb(package_name, version, src_folder, revision = 'm5stack1'):
318325
'llm-depth-anything':[create_bin_deb,'llm-depth-anything', version, src_folder, revision],
319326
'llm-vad':[create_bin_deb,'llm-vad', version, src_folder, revision],
320327
'llm-whisper':[create_bin_deb,'llm-whisper', version, src_folder, revision],
328+
'llm-openai-api':[create_bin_deb,'llm-openai-api', version, src_folder, revision],
321329
'llm-model-audio-en-us':[create_data_deb,'llm-model-audio-en-us', data_version, src_folder, revision],
322330
'llm-model-audio-zh-cn':[create_data_deb,'llm-model-audio-zh-cn', data_version, src_folder, revision],
323331
'llm-model-sherpa-ncnn-streaming-zipformer-20M-2023-02-17':[create_data_deb,'llm-model-sherpa-ncnn-streaming-zipformer-20M-2023-02-17', data_version, src_folder, revision],

0 commit comments

Comments
 (0)