diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 888d2ded..aeb5e683 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -2,7 +2,7 @@ // README at: https://github.com/devcontainers/templates/tree/main/src/docker-existing-dockerfile { "name": "ten_agent_dev", - "image": "ghcr.io/ten-framework/ten_agent_build:0.2.3", + "image": "ghcr.io/ten-framework/ten_agent_build:0.2.4", "customizations": { "vscode": { "extensions": [ diff --git a/Dockerfile b/Dockerfile index d6777ef7..7383768c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/ten-framework/ten_agent_build:0.2.3 AS builder +FROM ghcr.io/ten-framework/ten_agent_build:0.2.4 AS builder ARG SESSION_CONTROL_CONF=session_control.conf @@ -7,7 +7,7 @@ WORKDIR /app COPY . . COPY agents/${SESSION_CONTROL_CONF} agents/session_control.conf -RUN make clean && make build && \ +RUN task clean && task use && \ cd agents && ./scripts/package.sh FROM ubuntu:22.04 diff --git a/Makefile b/Makefile deleted file mode 100644 index 229d4813..00000000 --- a/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -PROJECT_NAME := ten_agent -PROJECT_VERSION ?= "0.1."$(shell date -u +'%Y%m%d%H') -REGISTRY ?= agoraio/ - -.PHONY: build build-agents build-playground build-server clean clean-agents docker-build-playground docker-build-server run-gd-server run-server - -build: build-agents build-server - -build-agents: - @echo ">> build agents" - cd agents && ./scripts/install_deps_and_build.sh linux x64 && mv bin/main bin/worker - @echo ">> done" - -build-playground: - @echo ">> build playground" - cd playground && npm i && npm run build - @echo ">> done" - -build-server: - @echo ">> build server" - cd server && go mod tidy && go mod download && go build -o bin/api main.go - @echo ">> done" - -clean: clean-agents - -clean-agents: - @echo ">> clean agents" - rm -rf agents/bin/worker agents/out agents/interface agents/include agents/lib agents/lib64 agents/ten_packages/system/ten_runtime* agents/ten_packages/system/agora_rtc_sdk agents/ten_packages/system/azure_speech_sdk agents/ten_packages/system/nlohmann_json agents/.release - @echo ">> done" - -docker-build-playground: - @echo ">> docker build playground" - cd playground && docker build -t $(REGISTRY)$(PROJECT_NAME)_playground:$(PROJECT_VERSION) --platform linux/amd64 -f Dockerfile . - @echo ">> done" - -docker-build-server: - @echo ">> docker build server" - docker build -t $(REGISTRY)$(PROJECT_NAME)_server:$(PROJECT_VERSION) --platform linux/amd64 -f Dockerfile . - @echo ">> done" - -run-gd-server: - @echo ">> run graph designer server" - cd agents && tman dev-server - @echo ">> done" - -run-server: - @echo ">> run server" - server/bin/api - @echo ">> done" diff --git a/README.md b/README.md index a7a76632..830ce99d 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@ You will need to uncheck "Use Rosetta for x86_64/amd64 emulation on Apple Silico ![Docker Setting](https://github.com/TEN-framework/docs/blob/main/assets/gif/docker_setting.gif?raw=true) #### Windows: Configuring Git to handle line endings -To avoid problems in `make run-server` later, you can configure Git to properly handle line endings on Windows.([more here](https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings?platform=windows)) +To avoid problems in `task run` later, you can configure Git to properly handle line endings on Windows.([more here](https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings?platform=windows)) ```bash git config --global core.autocrlf true @@ -148,13 +148,13 @@ Open up a separate terminal window, enter the container and build the agent: ```bash docker exec -it ten_agent_dev bash -make build +task use AGENT=agents/examples/demo ``` #### 5. Start the server -Once the build is done, `make run-server` on port `8080`: +Once the build is done, `task run` on port `8080/49483`: ```bash -make run-server +task run ``` ### Finish and verify diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 00000000..e27827c2 --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,68 @@ +version: '3' + +tasks: + clean: + desc: clean up + cmds: + - task: clean-agents + - task: clean-server + + build: + desc: build + cmds: + - task: build-agent + - task: build-server + + use: + desc: use agent, default 'agents/examples/demo' + vars: + AGENT: '{{.AGENT| default "agents/examples/demo"}}' + cmds: + - ln -sf {{.USER_WORKING_DIR}}/{{.AGENT}}/manifest.json ./agents/ + - ln -sf {{.USER_WORKING_DIR}}/{{.AGENT}}/property.json ./agents/ + - task: build + + run-server: + desc: run backend http server + cmds: + - /app/server/bin/api + + run-gd-server: + desc: run tman dev http server for graph designer + dir: ./agents + cmds: + - tman dev-server + + run: + desc: run servers + deps: + - task: run-server + - task: run-gd-server + + build-agent: + desc: build agent + dir: ./agents + internal: true + cmds: + - ./scripts/install_deps_and_build.sh linux x64 && mv bin/main bin/worker + + build-server: + desc: build server + dir: ./server + internal: true + cmds: + - go mod tidy && go mod download && go build -o bin/api main.go + + clean-agents: + desc: clean up agents + dir: ./agents + internal: true + cmds: + - rm -rf manifest.json property.json manifest-lock.json bin/main bin/worker out .release ten_packages/system/ten_runtime* ten_packages/system/agora_rtc_sdk ten_packages/system/azure_speech_sdk ten_packages/system/nlohmann_json ten_packages/extension/agora_rtc ten_packages/extension/agora_rtm ten_packages/extension/agora_sess_ctrl ten_packages/extension/azure_tts ten_packages/extension/py_init_extension_cpp + + clean-server: + desc: clean up server + dir: ./server + internal: true + cmds: + - rm -rf bin \ No newline at end of file diff --git a/agents/.gitignore b/agents/.gitignore index 2ed20cf0..faced1f0 100644 --- a/agents/.gitignore +++ b/agents/.gitignore @@ -34,3 +34,6 @@ xdump_config .vscode *.pyc *.pyc.* +/manifest.json +/manifest-lock.json +/property.json diff --git a/agents/manifest.json b/agents/examples/demo/manifest.json similarity index 96% rename from agents/manifest.json rename to agents/examples/demo/manifest.json index fd37ac31..ab4316ed 100644 --- a/agents/manifest.json +++ b/agents/examples/demo/manifest.json @@ -1,6 +1,6 @@ { "type": "app", - "name": "ten_agent", + "name": "agent_demo", "version": "0.4.0", "dependencies": [ { diff --git a/agents/examples/demo/property.json b/agents/examples/demo/property.json new file mode 100644 index 00000000..6b357d11 --- /dev/null +++ b/agents/examples/demo/property.json @@ -0,0 +1,1395 @@ +{ + "_ten": { + "log_level": 3, + "predefined_graphs": [ + { + "name": "va_openai_azure", + "auto_start": false, + "nodes": [ + { + "type": "extension", + "extension_group": "default", + "addon": "agora_rtc", + "name": "agora_rtc", + "property": { + "app_id": "${env:AGORA_APP_ID}", + "token": "", + "channel": "ten_agent_test", + "stream_id": 1234, + "remote_stream_id": 123, + "subscribe_audio": true, + "publish_audio": true, + "publish_data": true, + "enable_agora_asr": true, + "agora_asr_vendor_name": "microsoft", + "agora_asr_language": "en-US", + "agora_asr_vendor_key": "${env:AZURE_STT_KEY}", + "agora_asr_vendor_region": "${env:AZURE_STT_REGION}", + "agora_asr_session_control_file_path": "session_control.conf" + } + }, + { + "type": "extension", + "extension_group": "default", + "addon": "interrupt_detector", + "name": "interrupt_detector" + }, + { + "type": "extension", + "extension_group": "chatgpt", + "addon": "openai_chatgpt", + "name": "openai_chatgpt", + "property": { + "base_url": "${env:OPENAI_API_BASE}", + "api_key": "${env:OPENAI_API_KEY}", + "frequency_penalty": 0.9, + "model": "${env:OPENAI_MODEL}", + "max_tokens": 512, + "prompt": "", + "proxy_url": "${env:OPENAI_PROXY_URL}", + "greeting": "TEN Agent connected. How can I help you today?", + "max_memory_length": 10 + } + }, + { + "type": "extension", + "extension_group": "tts", + "addon": "azure_tts", + "name": "azure_tts", + "property": { + "azure_subscription_key": "${env:AZURE_TTS_KEY}", + "azure_subscription_region": "${env:AZURE_TTS_REGION}", + "azure_synthesis_voice_name": "en-US-AndrewMultilingualNeural" + } + }, + { + "type": "extension", + "extension_group": "transcriber", + "addon": "message_collector", + "name": "message_collector" + } + ], + "connections": [ + { + "extension_group": "default", + "extension": "agora_rtc", + "data": [ + { + "name": "text_data", + "dest": [ + { + "extension_group": "default", + "extension": "interrupt_detector" + }, + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt" + }, + { + "extension_group": "transcriber", + "extension": "message_collector" + } + ] + } + ] + }, + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt", + "data": [ + { + "name": "text_data", + "dest": [ + { + "extension_group": "tts", + "extension": "azure_tts" + }, + { + "extension_group": "transcriber", + "extension": "message_collector" + } + ] + } + ], + "cmd": [ + { + "name": "flush", + "dest": [ + { + "extension_group": "tts", + "extension": "azure_tts" + } + ] + } + ] + }, + { + "extension_group": "tts", + "extension": "azure_tts", + "audio_frame": [ + { + "name": "pcm_frame", + "dest": [ + { + "extension_group": "default", + "extension": "agora_rtc" + } + ] + } + ], + "cmd": [ + { + "name": "flush", + "dest": [ + { + "extension_group": "default", + "extension": "agora_rtc" + } + ] + } + ] + }, + { + "extension_group": "transcriber", + "extension": "message_collector", + "data": [ + { + "name": "data", + "dest": [ + { + "extension_group": "default", + "extension": "agora_rtc" + } + ] + } + ] + }, + { + "extension_group": "default", + "extension": "interrupt_detector", + "cmd": [ + { + "name": "flush", + "dest": [ + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt" + } + ] + } + ] + } + ] + }, + { + "name": "camera_va_openai_azure", + "auto_start": false, + "nodes": [ + { + "type": "extension", + "extension_group": "default", + "addon": "agora_rtc", + "name": "agora_rtc", + "property": { + "app_id": "${env:AGORA_APP_ID}", + "token": "", + "channel": "ten_agent_test", + "stream_id": 1234, + "remote_stream_id": 123, + "subscribe_audio": true, + "subscribe_video": true, + "publish_audio": true, + "publish_data": true, + "enable_agora_asr": true, + "agora_asr_vendor_name": "microsoft", + "agora_asr_language": "en-US", + "agora_asr_vendor_key": "${env:AZURE_STT_KEY}", + "agora_asr_vendor_region": "${env:AZURE_STT_REGION}", + "agora_asr_session_control_file_path": "session_control.conf", + "subscribe_video_pix_fmt": 4 + } + }, + { + "type": "extension", + "extension_group": "default", + "addon": "interrupt_detector", + "name": "interrupt_detector" + }, + { + "type": "extension", + "extension_group": "chatgpt", + "addon": "openai_chatgpt_python", + "name": "openai_chatgpt", + "property": { + "base_url": "${env:OPENAI_API_BASE}", + "api_key": "${env:OPENAI_API_KEY}", + "frequency_penalty": 0.9, + "model": "gpt-4o", + "max_tokens": 512, + "prompt": "", + "proxy_url": "${env:OPENAI_PROXY_URL}", + "greeting": "TEN Agent connected. How can I help you today?", + "checking_vision_text_items": "[\"Let me take a look...\",\"Let me check your camera...\",\"Please wait for a second...\"]", + "max_memory_length": 10, + "enable_tools": true + } + }, + { + "type": "extension", + "extension_group": "chatgpt", + "addon": "vision_tool_python", + "name": "vision_tool" + }, + { + "type": "extension", + "extension_group": "chatgpt", + "addon": "weatherapi_tool_python", + "name": "weatherapi_tool_python", + "property": { + "api_key": "${env:WEATHERAPI_API_KEY}" + } + }, + { + "type": "extension", + "extension_group": "chatgpt", + "addon": "bingsearch_tool_python", + "name": "bingsearch_tool_python", + "property": { + "api_key": "${env:BING_API_KEY}" + } + }, + { + "type": "extension", + "extension_group": "tts", + "addon": "azure_tts", + "name": "azure_tts", + "property": { + "azure_subscription_key": "${env:AZURE_TTS_KEY}", + "azure_subscription_region": "${env:AZURE_TTS_REGION}", + "azure_synthesis_voice_name": "en-US-AndrewMultilingualNeural" + } + }, + { + "type": "extension", + "extension_group": "transcriber", + "addon": "message_collector", + "name": "message_collector" + } + ], + "connections": [ + { + "extension_group": "default", + "extension": "agora_rtc", + "data": [ + { + "name": "text_data", + "dest": [ + { + "extension_group": "default", + "extension": "interrupt_detector" + }, + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt" + }, + { + "extension_group": "transcriber", + "extension": "message_collector" + } + ] + } + ], + "video_frame": [ + { + "name": "video_frame", + "dest": [ + { + "extension_group": "chatgpt", + "extension": "vision_tool" + } + ] + } + ], + "cmd": [ + { + "name": "on_user_joined", + "dest": [ + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt" + } + ] + }, + { + "name": "on_user_left", + "dest": [ + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt" + } + ] + } + ] + }, + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt", + "data": [ + { + "name": "text_data", + "dest": [ + { + "extension_group": "tts", + "extension": "azure_tts" + }, + { + "extension_group": "transcriber", + "extension": "message_collector" + } + ] + } + ], + "cmd": [ + { + "name": "flush", + "dest": [ + { + "extension_group": "tts", + "extension": "azure_tts" + } + ] + }, + { + "name": "tool_call", + "dest": [ + { + "extension_group": "chatgpt", + "extension": "vision_tool" + }, + { + "extension_group": "chatgpt", + "extension": "weatherapi_tool_python" + }, + { + "extension_group": "chatgpt", + "extension": "bingsearch_tool_python" + } + ] + } + ] + }, + { + "extension_group": "chatgpt", + "extension": "vision_tool", + "cmd": [ + { + "name": "tool_register", + "dest": [ + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt" + } + ] + } + ] + }, + { + "extension_group": "chatgpt", + "extension": "weatherapi_tool_python", + "cmd": [ + { + "name": "tool_register", + "dest": [ + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt" + } + ] + } + ] + }, + { + "extension_group": "chatgpt", + "extension": "bingsearch_tool_python", + "cmd": [ + { + "name": "tool_register", + "dest": [ + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt" + } + ] + } + ] + }, + { + "extension_group": "tts", + "extension": "azure_tts", + "audio_frame": [ + { + "name": "pcm_frame", + "dest": [ + { + "extension_group": "default", + "extension": "agora_rtc" + } + ] + } + ], + "cmd": [ + { + "name": "flush", + "dest": [ + { + "extension_group": "default", + "extension": "agora_rtc" + } + ] + } + ] + }, + { + "extension_group": "transcriber", + "extension": "message_collector", + "data": [ + { + "name": "data", + "dest": [ + { + "extension_group": "default", + "extension": "agora_rtc" + } + ] + } + ] + }, + { + "extension_group": "default", + "extension": "interrupt_detector", + "cmd": [ + { + "name": "flush", + "dest": [ + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt" + } + ] + } + ] + } + ] + }, + { + "name": "va_openai_v2v", + "auto_start": true, + "nodes": [ + { + "type": "extension", + "extension_group": "rtc", + "addon": "agora_rtc", + "name": "agora_rtc", + "property": { + "app_id": "${env:AGORA_APP_ID}", + "token": "", + "channel": "ten_agent_test", + "stream_id": 1234, + "remote_stream_id": 123, + "subscribe_audio": true, + "subscribe_video": true, + "publish_audio": true, + "publish_data": true, + "subscribe_audio_sample_rate": 24000, + "subscribe_video_pix_fmt": 4 + } + }, + { + "type": "extension", + "extension_group": "llm", + "addon": "openai_v2v_python", + "name": "openai_v2v_python", + "property": { + "api_key": "${env:OPENAI_REALTIME_API_KEY}", + "temperature": 0.9, + "model": "gpt-4o-realtime-preview", + "max_tokens": 2048, + "voice": "alloy", + "language": "en-US", + "server_vad": true, + "dump": true, + "history": 10 + } + }, + { + "type": "extension", + "extension_group": "llm", + "addon": "openai_chatgpt_python", + "name": "openai_chatgpt", + "property": { + "base_url": "${env:OPENAI_API_BASE}", + "api_key": "${env:OPENAI_API_KEY}", + "frequency_penalty": 0.9, + "model": "${env:OPENAI_MODEL}", + "max_tokens": 512, + "prompt": "", + "proxy_url": "${env:OPENAI_PROXY_URL}", + "greeting": "TEN Agent connected. How can I help you today?", + "checking_vision_text_items": "[\"Let me take a look...\",\"Let me check your camera...\",\"Please wait for a second...\"]", + "max_memory_length": 10, + "enable_tools": true + } + }, + { + "type": "extension", + "extension_group": "transcriber", + "addon": "message_collector", + "name": "message_collector" + }, + { + "type": "extension", + "extension_group": "tools", + "addon": "weatherapi_tool_python", + "name": "weatherapi_tool_python", + "property": { + "api_key": "${env:WEATHERAPI_API_KEY}" + } + }, + { + "type": "extension", + "extension_group": "tools", + "addon": "bingsearch_tool_python", + "name": "bingsearch_tool_python", + "property": { + "api_key": "${env:BING_API_KEY}" + } + }, + { + "type": "extension", + "extension_group": "tools", + "addon": "vision_analyze_tool_python", + "name": "vision_analyze_tool_python" + } + ], + "connections": [ + { + "extension_group": "rtc", + "extension": "agora_rtc", + "audio_frame": [ + { + "name": "pcm_frame", + "dest": [ + { + "extension_group": "llm", + "extension": "openai_v2v_python" + } + ] + } + ], + "video_frame": [ + { + "name": "video_frame", + "dest": [ + { + "extension_group": "tools", + "extension": "vision_analyze_tool_python" + } + ] + } + ] + }, + { + "extension_group": "tools", + "extension": "weatherapi_tool_python", + "cmd": [ + { + "name": "tool_register", + "dest": [ + { + "extension_group": "llm", + "extension": "openai_v2v_python" + } + ] + } + ] + }, + { + "extension_group": "tools", + "extension": "bingsearch_tool_python", + "cmd": [ + { + "name": "tool_register", + "dest": [ + { + "extension_group": "llm", + "extension": "openai_v2v_python" + } + ] + } + ] + }, + { + "extension_group": "tools", + "extension": "vision_analyze_tool_python", + "cmd": [ + { + "name": "tool_register", + "dest": [ + { + "extension_group": "llm", + "extension": "openai_v2v_python" + } + ] + }, + { + "name": "chat_completion_call", + "dest": [ + { + "extension_group": "llm", + "extension": "openai_chatgpt" + } + ] + } + ] + }, + { + "extension_group": "llm", + "extension": "openai_v2v_python", + "audio_frame": [ + { + "name": "pcm_frame", + "dest": [ + { + "extension_group": "rtc", + "extension": "agora_rtc" + } + ] + } + ], + "data": [ + { + "name": "text_data", + "dest": [ + { + "extension_group": "transcriber", + "extension": "message_collector" + } + ] + } + ], + "cmd": [ + { + "name": "flush", + "dest": [ + { + "extension_group": "rtc", + "extension": "agora_rtc" + } + ] + }, + { + "name": "tool_call_get_current_weather", + "dest": [ + { + "extension_group": "tools", + "extension": "weatherapi_tool_python", + "msg_conversion": { + "type": "per_property", + "keep_original": true, + "rules": [ + { + "path": "_ten.name", + "conversion_mode": "fixed_value", + "value": "tool_call" + } + ] + } + } + ] + }, + { + "name": "tool_call_get_past_weather", + "dest": [ + { + "extension_group": "tools", + "extension": "weatherapi_tool_python", + "msg_conversion": { + "type": "per_property", + "keep_original": true, + "rules": [ + { + "path": "_ten.name", + "conversion_mode": "fixed_value", + "value": "tool_call" + } + ] + } + } + ] + }, + { + "name": "tool_call_get_future_weather", + "dest": [ + { + "extension_group": "tools", + "extension": "weatherapi_tool_python", + "msg_conversion": { + "type": "per_property", + "keep_original": true, + "rules": [ + { + "path": "_ten.name", + "conversion_mode": "fixed_value", + "value": "tool_call" + } + ] + } + } + ] + }, + { + "name": "tool_call_bing_search", + "dest": [ + { + "extension_group": "tools", + "extension": "bingsearch_tool_python", + "msg_conversion": { + "type": "per_property", + "keep_original": true, + "rules": [ + { + "path": "_ten.name", + "conversion_mode": "fixed_value", + "value": "tool_call" + } + ] + } + } + ] + }, + { + "name": "tool_call_get_vision_chat_completion", + "dest": [ + { + "extension_group": "tools", + "extension": "vision_analyze_tool_python", + "msg_conversion": { + "type": "per_property", + "keep_original": true, + "rules": [ + { + "path": "_ten.name", + "conversion_mode": "fixed_value", + "value": "tool_call" + } + ] + } + } + ] + } + ] + }, + { + "extension_group": "transcriber", + "extension": "message_collector", + "data": [ + { + "name": "data", + "dest": [ + { + "extension_group": "rtc", + "extension": "agora_rtc" + } + ] + } + ] + } + ] + }, + { + "name": "va_openai_v2v_fish", + "auto_start": false, + "nodes": [ + { + "type": "extension", + "extension_group": "rtc", + "addon": "agora_rtc", + "name": "agora_rtc", + "property": { + "app_id": "${env:AGORA_APP_ID}", + "token": "", + "channel": "ten_agent_test", + "stream_id": 1234, + "remote_stream_id": 123, + "subscribe_audio": true, + "publish_audio": true, + "publish_data": true, + "subscribe_audio_sample_rate": 24000, + "enable_agora_asr": true, + "agora_asr_vendor_name": "microsoft", + "agora_asr_language": "en-US", + "agora_asr_vendor_key": "${env:AZURE_STT_KEY}", + "agora_asr_vendor_region": "${env:AZURE_STT_REGION}", + "agora_asr_session_control_file_path": "session_control.conf" + } + }, + { + "type": "extension", + "extension_group": "llm", + "addon": "openai_v2v_python", + "name": "openai_v2v_python", + "property": { + "api_key": "${env:OPENAI_REALTIME_API_KEY}", + "temperature": 0.9, + "model": "gpt-4o-realtime-preview", + "max_tokens": 2048, + "audio_out": false, + "input_transcript": false, + "language": "en-US", + "server_vad": true, + "dump": true, + "history": 10 + } + }, + { + "type": "extension", + "extension_group": "tts", + "addon": "fish_audio_tts", + "name": "fish_audio_tts", + "property": { + "api_key": "${env:FISH_AUDIO_TTS_KEY}", + "model_id": "d8639b5cc95548f5afbcfe22d3ba5ce5", + "optimize_streaming_latency": true, + "request_timeout_seconds": 30, + "base_url": "https://api.fish.audio" + } + }, + { + "type": "extension", + "extension_group": "transcriber", + "addon": "message_collector", + "name": "message_collector" + }, + { + "type": "extension", + "extension_group": "tools", + "addon": "weatherapi_tool_python", + "name": "weatherapi_tool_python", + "property": { + "api_key": "${env:WEATHERAPI_API_KEY}" + } + }, + { + "type": "extension", + "extension_group": "tools", + "addon": "bingsearch_tool_python", + "name": "bingsearch_tool_python", + "property": { + "api_key": "${env:BING_API_KEY}" + } + } + ], + "connections": [ + { + "extension_group": "rtc", + "extension": "agora_rtc", + "audio_frame": [ + { + "name": "pcm_frame", + "dest": [ + { + "extension_group": "llm", + "extension": "openai_v2v_python" + } + ] + } + ], + "data": [ + { + "name": "text_data", + "dest": [ + { + "extension_group": "transcriber", + "extension": "message_collector" + } + ] + } + ] + }, + { + "extension_group": "tools", + "extension": "weatherapi_tool_python", + "cmd": [ + { + "name": "tool_register", + "dest": [ + { + "extension_group": "llm", + "extension": "openai_v2v_python" + } + ] + } + ] + }, + { + "extension_group": "tools", + "extension": "bingsearch_tool_python", + "cmd": [ + { + "name": "tool_register", + "dest": [ + { + "extension_group": "llm", + "extension": "openai_v2v_python" + } + ] + } + ] + }, + { + "extension_group": "llm", + "extension": "openai_v2v_python", + "data": [ + { + "name": "text_data", + "dest": [ + { + "extension_group": "transcriber", + "extension": "message_collector" + }, + { + "extension_group": "tts", + "extension": "fish_audio_tts" + } + ] + } + ], + "cmd": [ + { + "name": "flush", + "dest": [ + { + "extension_group": "tts", + "extension": "fish_audio_tts" + } + ] + }, + { + "name": "tool_call_get_current_weather", + "dest": [ + { + "extension_group": "tools", + "extension": "weatherapi_tool_python", + "msg_conversion": { + "type": "per_property", + "keep_original": true, + "rules": [ + { + "path": "_ten.name", + "conversion_mode": "fixed_value", + "value": "tool_call" + } + ] + } + } + ] + }, + { + "name": "tool_call_get_past_weather", + "dest": [ + { + "extension_group": "tools", + "extension": "weatherapi_tool_python", + "msg_conversion": { + "type": "per_property", + "keep_original": true, + "rules": [ + { + "path": "_ten.name", + "conversion_mode": "fixed_value", + "value": "tool_call" + } + ] + } + } + ] + }, + { + "name": "tool_call_get_future_weather", + "dest": [ + { + "extension_group": "tools", + "extension": "weatherapi_tool_python", + "msg_conversion": { + "type": "per_property", + "keep_original": true, + "rules": [ + { + "path": "_ten.name", + "conversion_mode": "fixed_value", + "value": "tool_call" + } + ] + } + } + ] + }, + { + "name": "tool_call_bing_search", + "dest": [ + { + "extension_group": "tools", + "extension": "bingsearch_tool_python", + "msg_conversion": { + "type": "per_property", + "keep_original": true, + "rules": [ + { + "path": "_ten.name", + "conversion_mode": "fixed_value", + "value": "tool_call" + } + ] + } + } + ] + } + ] + }, + { + "extension_group": "tts", + "extension": "fish_audio_tts", + "audio_frame": [ + { + "name": "pcm_frame", + "dest": [ + { + "extension_group": "rtc", + "extension": "agora_rtc" + } + ] + } + ], + "cmd": [ + { + "name": "flush", + "dest": [ + { + "extension_group": "rtc", + "extension": "agora_rtc" + } + ] + } + ] + }, + { + "extension_group": "transcriber", + "extension": "message_collector", + "data": [ + { + "name": "data", + "dest": [ + { + "extension_group": "rtc", + "extension": "agora_rtc" + } + ] + } + ] + } + ] + }, + { + "name": "camera_va_openai_azure_rtm", + "auto_start": true, + "nodes": [ + { + "type": "extension", + "extension_group": "default", + "addon": "agora_rtc", + "name": "agora_rtc", + "property": { + "app_id": "${env:AGORA_APP_ID}", + "token": "", + "channel": "ten_agent_test", + "stream_id": 1234, + "remote_stream_id": 123, + "subscribe_audio": true, + "subscribe_video": true, + "publish_audio": true, + "publish_data": true, + "enable_agora_asr": true, + "agora_asr_vendor_name": "microsoft", + "agora_asr_language": "en-US", + "agora_asr_vendor_key": "${env:AZURE_STT_KEY}", + "agora_asr_vendor_region": "${env:AZURE_STT_REGION}", + "agora_asr_session_control_file_path": "session_control.conf", + "subscribe_video_pix_fmt": 4 + } + }, + { + "type": "extension", + "extension_group": "rtm", + "addon": "agora_rtm", + "name": "agora_rtm", + "property": { + "channel": "ten_agent_test", + "app_id": "${env:AGORA_APP_ID}", + "token": "", + "user_id": "0", + "rtm_enabled": true, + "rtm_is_stream": false, + "rtm_presence_enabled": false, + "rtm_metadata_enabled": false, + "rtm_lock_enabled": false + } + }, + { + "type": "extension", + "extension_group": "default", + "addon": "interrupt_detector", + "name": "interrupt_detector" + }, + { + "type": "extension", + "extension_group": "chatgpt", + "addon": "openai_chatgpt_python", + "name": "openai_chatgpt", + "property": { + "base_url": "${env:OPENAI_API_BASE}", + "api_key": "${env:OPENAI_API_KEY}", + "frequency_penalty": 0.9, + "model": "${env:OPENAI_MODEL}", + "max_tokens": 512, + "prompt": "", + "proxy_url": "${env:OPENAI_PROXY_URL}", + "greeting": "TEN Agent connected. How can I help you today?", + "checking_vision_text_items": "[\"Let me take a look...\",\"Let me check your camera...\",\"Please wait for a second...\"]", + "max_memory_length": 10, + "enable_tools": true + } + }, + { + "type": "extension", + "extension_group": "tts", + "addon": "azure_tts", + "name": "azure_tts", + "property": { + "azure_subscription_key": "${env:AZURE_TTS_KEY}", + "azure_subscription_region": "${env:AZURE_TTS_REGION}", + "azure_synthesis_voice_name": "en-US-AndrewMultilingualNeural" + } + }, + { + "type": "extension", + "extension_group": "message_collector_rtm", + "addon": "message_collector_rtm", + "name": "message_collector_rtm" + } + ], + "connections": [ + { + "extension_group": "default", + "extension": "agora_rtc", + "data": [ + { + "name": "text_data", + "dest": [ + { + "extension_group": "default", + "extension": "interrupt_detector" + }, + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt" + }, + { + "extension_group": "message_collector_rtm", + "extension": "message_collector_rtm" + } + ] + } + ], + "cmd": [ + { + "name": "on_user_joined", + "dest": [ + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt" + } + ] + }, + { + "name": "on_user_left", + "dest": [ + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt" + } + ] + }, + { + "name": "on_user_audio_track_state_changed", + "dest": [ + { + "extension_group": "message_collector_rtm", + "extension": "message_collector_rtm" + } + ] + } + ] + }, + { + "extension": "agora_rtm", + "extension_group": "rtm", + "data": [ + { + "name": "rtm_message_event", + "dest": [ + { + "extension_group": "message_collector_rtm", + "extension": "message_collector_rtm" + } + ] + }, + { + "name": "rtm_storage_event", + "dest": [ + { + "extension_group": "message_collector_rtm", + "extension": "message_collector_rtm" + } + ] + }, + { + "name": "rtm_presence_event", + "dest": [ + { + "extension_group": "message_collector_rtm", + "extension": "message_collector_rtm" + } + ] + }, + { + "name": "rtm_lock_event", + "dest": [ + { + "extension_group": "message_collector_rtm", + "extension": "message_collector_rtm" + } + ] + } + ] + }, + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt", + "data": [ + { + "name": "text_data", + "dest": [ + { + "extension_group": "tts", + "extension": "azure_tts" + }, + { + "extension_group": "message_collector_rtm", + "extension": "message_collector_rtm" + } + ] + } + ], + "cmd": [ + { + "name": "flush", + "dest": [ + { + "extension_group": "tts", + "extension": "azure_tts" + } + ] + } + ] + }, + { + "extension_group": "tts", + "extension": "azure_tts", + "audio_frame": [ + { + "name": "pcm_frame", + "dest": [ + { + "extension_group": "default", + "extension": "agora_rtc" + } + ] + } + ], + "cmd": [ + { + "name": "flush", + "dest": [ + { + "extension_group": "default", + "extension": "agora_rtc" + } + ] + } + ] + }, + { + "extension_group": "message_collector_rtm", + "extension": "message_collector_rtm", + "data": [ + { + "name": "text_data", + "dest": [ + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt" + } + ] + } + ], + "cmd": [ + { + "name": "publish", + "dest": [ + { + "extension_group": "rtm", + "extension": "agora_rtm" + } + ] + }, + { + "name": "set_presence_state", + "dest": [ + { + "extension_group": "rtm", + "extension": "agora_rtm" + } + ] + } + ] + }, + { + "extension_group": "default", + "extension": "interrupt_detector", + "cmd": [ + { + "name": "flush", + "dest": [ + { + "extension_group": "chatgpt", + "extension": "openai_chatgpt" + } + ] + } + ] + } + ] + } + ] + } +} \ No newline at end of file diff --git a/agents/examples/experimental/manifest.json b/agents/examples/experimental/manifest.json new file mode 100644 index 00000000..2a16c223 --- /dev/null +++ b/agents/examples/experimental/manifest.json @@ -0,0 +1,42 @@ +{ + "type": "app", + "name": "agent_experimental", + "version": "0.4.0", + "dependencies": [ + { + "type": "system", + "name": "ten_runtime_go", + "version": "0.4" + }, + { + "type": "extension", + "name": "py_init_extension_cpp", + "version": "0.4" + }, + { + "type": "extension", + "name": "agora_rtc", + "version": "=0.9.0-rc1" + }, + { + "type": "extension", + "name": "agora_sess_ctrl", + "version": "0.3.0-rc1" + }, + { + "type": "system", + "name": "azure_speech_sdk", + "version": "1.38.0" + }, + { + "type": "extension", + "name": "azure_tts", + "version": "=0.6.0" + }, + { + "type": "extension", + "name": "agora_rtm", + "version": "=0.3.0" + } + ] +} \ No newline at end of file diff --git a/agents/property.json b/agents/examples/experimental/property.json similarity index 72% rename from agents/property.json rename to agents/examples/experimental/property.json index 505e8f4e..a6ceb0e8 100644 --- a/agents/property.json +++ b/agents/examples/experimental/property.json @@ -198,185 +198,6 @@ } ] }, - { - "name": "va_openai_azure", - "auto_start": false, - "nodes": [ - { - "type": "extension", - "extension_group": "default", - "addon": "agora_rtc", - "name": "agora_rtc", - "property": { - "app_id": "${env:AGORA_APP_ID}", - "token": "", - "channel": "ten_agent_test", - "stream_id": 1234, - "remote_stream_id": 123, - "subscribe_audio": true, - "publish_audio": true, - "publish_data": true, - "enable_agora_asr": true, - "agora_asr_vendor_name": "microsoft", - "agora_asr_language": "en-US", - "agora_asr_vendor_key": "${env:AZURE_STT_KEY}", - "agora_asr_vendor_region": "${env:AZURE_STT_REGION}", - "agora_asr_session_control_file_path": "session_control.conf" - } - }, - { - "type": "extension", - "extension_group": "default", - "addon": "interrupt_detector", - "name": "interrupt_detector" - }, - { - "type": "extension", - "extension_group": "chatgpt", - "addon": "openai_chatgpt", - "name": "openai_chatgpt", - "property": { - "base_url": "${env:OPENAI_API_BASE}", - "api_key": "${env:OPENAI_API_KEY}", - "frequency_penalty": 0.9, - "model": "${env:OPENAI_MODEL}", - "max_tokens": 512, - "prompt": "", - "proxy_url": "${env:OPENAI_PROXY_URL}", - "greeting": "TEN Agent connected. How can I help you today?", - "max_memory_length": 10 - } - }, - { - "type": "extension", - "extension_group": "tts", - "addon": "azure_tts", - "name": "azure_tts", - "property": { - "azure_subscription_key": "${env:AZURE_TTS_KEY}", - "azure_subscription_region": "${env:AZURE_TTS_REGION}", - "azure_synthesis_voice_name": "en-US-AndrewMultilingualNeural" - } - }, - { - "type": "extension", - "extension_group": "transcriber", - "addon": "message_collector", - "name": "message_collector" - } - ], - "connections": [ - { - "extension_group": "default", - "extension": "agora_rtc", - "data": [ - { - "name": "text_data", - "dest": [ - { - "extension_group": "default", - "extension": "interrupt_detector" - }, - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt" - }, - { - "extension_group": "transcriber", - "extension": "message_collector" - } - ] - } - ] - }, - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt", - "data": [ - { - "name": "text_data", - "dest": [ - { - "extension_group": "tts", - "extension": "azure_tts" - }, - { - "extension_group": "transcriber", - "extension": "message_collector" - } - ] - } - ], - "cmd": [ - { - "name": "flush", - "dest": [ - { - "extension_group": "tts", - "extension": "azure_tts" - } - ] - } - ] - }, - { - "extension_group": "tts", - "extension": "azure_tts", - "audio_frame": [ - { - "name": "pcm_frame", - "dest": [ - { - "extension_group": "default", - "extension": "agora_rtc" - } - ] - } - ], - "cmd": [ - { - "name": "flush", - "dest": [ - { - "extension_group": "default", - "extension": "agora_rtc" - } - ] - } - ] - }, - { - "extension_group": "transcriber", - "extension": "message_collector", - "data": [ - { - "name": "data", - "dest": [ - { - "extension_group": "default", - "extension": "agora_rtc" - } - ] - } - ] - }, - { - "extension_group": "default", - "extension": "interrupt_detector", - "cmd": [ - { - "name": "flush", - "dest": [ - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt" - } - ] - } - ] - } - ] - }, { "name": "va_simple_azure_openai_v2v", "auto_start": false, @@ -1764,7 +1585,7 @@ ] }, { - "name": "camera_va_openai_azure", + "name": "tool_va_openai_azure", "auto_start": false, "nodes": [ { @@ -1831,15 +1652,6 @@ "api_key": "${env:WEATHERAPI_API_KEY}" } }, - { - "type": "extension", - "extension_group": "chatgpt", - "addon": "bingsearch_tool_python", - "name": "bingsearch_tool_python", - "property": { - "api_key": "${env:BING_API_KEY}" - } - }, { "type": "extension", "extension_group": "tts", @@ -1951,10 +1763,6 @@ { "extension_group": "chatgpt", "extension": "weatherapi_tool_python" - }, - { - "extension_group": "chatgpt", - "extension": "bingsearch_tool_python" } ] } @@ -1990,21 +1798,6 @@ } ] }, - { - "extension_group": "chatgpt", - "extension": "bingsearch_tool_python", - "cmd": [ - { - "name": "tool_register", - "dest": [ - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt" - } - ] - } - ] - }, { "extension_group": "tts", "extension": "azure_tts", @@ -2064,7 +1857,7 @@ ] }, { - "name": "tool_va_openai_azure", + "name": "va_gemini_azure", "auto_start": false, "nodes": [ { @@ -2074,12 +1867,11 @@ "name": "agora_rtc", "property": { "app_id": "${env:AGORA_APP_ID}", - "token": "", + "token": "", "channel": "ten_agent_test", "stream_id": 1234, "remote_stream_id": 123, "subscribe_audio": true, - "subscribe_video": true, "publish_audio": true, "publish_data": true, "enable_agora_asr": true, @@ -2087,8 +1879,7 @@ "agora_asr_language": "en-US", "agora_asr_vendor_key": "${env:AZURE_STT_KEY}", "agora_asr_vendor_region": "${env:AZURE_STT_REGION}", - "agora_asr_session_control_file_path": "session_control.conf", - "subscribe_video_pix_fmt": 4 + "agora_asr_session_control_file_path": "session_control.conf" } }, { @@ -2099,36 +1890,19 @@ }, { "type": "extension", - "extension_group": "chatgpt", - "addon": "openai_chatgpt_python", - "name": "openai_chatgpt", + "extension_group": "llm", + "addon": "gemini_llm_python", + "name": "gemini_llm", "property": { - "base_url": "${env:OPENAI_API_BASE}", - "api_key": "${env:OPENAI_API_KEY}", - "frequency_penalty": 0.9, - "model": "gpt-4o", - "max_tokens": 512, - "prompt": "", - "proxy_url": "${env:OPENAI_PROXY_URL}", + "api_key": "$GEMINI_API_KEY", "greeting": "TEN Agent connected. How can I help you today?", - "checking_vision_text_items": "[\"Let me take a look...\",\"Let me check your camera...\",\"Please wait for a second...\"]", "max_memory_length": 10, - "enable_tools": true - } - }, - { - "type": "extension", - "extension_group": "chatgpt", - "addon": "vision_tool_python", - "name": "vision_tool" - }, - { - "type": "extension", - "extension_group": "chatgpt", - "addon": "weatherapi_tool_python", - "name": "weatherapi_tool_python", - "property": { - "api_key": "${env:WEATHERAPI_API_KEY}" + "max_output_tokens": 512, + "model": "gemini-1.5-flash", + "prompt": "", + "temperature": 1.0, + "top_k": 40, + "top_p": 0.95 } }, { @@ -2162,261 +1936,8 @@ "extension": "interrupt_detector" }, { - "extension_group": "chatgpt", - "extension": "openai_chatgpt" - }, - { - "extension_group": "transcriber", - "extension": "message_collector" - } - ] - } - ], - "video_frame": [ - { - "name": "video_frame", - "dest": [ - { - "extension_group": "chatgpt", - "extension": "vision_tool" - } - ] - } - ], - "cmd": [ - { - "name": "on_user_joined", - "dest": [ - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt" - } - ] - }, - { - "name": "on_user_left", - "dest": [ - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt" - } - ] - } - ] - }, - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt", - "data": [ - { - "name": "text_data", - "dest": [ - { - "extension_group": "tts", - "extension": "azure_tts" - }, - { - "extension_group": "transcriber", - "extension": "message_collector" - } - ] - } - ], - "cmd": [ - { - "name": "flush", - "dest": [ - { - "extension_group": "tts", - "extension": "azure_tts" - } - ] - }, - { - "name": "tool_call", - "dest": [ - { - "extension_group": "chatgpt", - "extension": "vision_tool" - }, - { - "extension_group": "chatgpt", - "extension": "weatherapi_tool_python" - } - ] - } - ] - }, - { - "extension_group": "chatgpt", - "extension": "vision_tool", - "cmd": [ - { - "name": "tool_register", - "dest": [ - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt" - } - ] - } - ] - }, - { - "extension_group": "chatgpt", - "extension": "weatherapi_tool_python", - "cmd": [ - { - "name": "tool_register", - "dest": [ - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt" - } - ] - } - ] - }, - { - "extension_group": "tts", - "extension": "azure_tts", - "audio_frame": [ - { - "name": "pcm_frame", - "dest": [ - { - "extension_group": "default", - "extension": "agora_rtc" - } - ] - } - ], - "cmd": [ - { - "name": "flush", - "dest": [ - { - "extension_group": "default", - "extension": "agora_rtc" - } - ] - } - ] - }, - { - "extension_group": "transcriber", - "extension": "message_collector", - "data": [ - { - "name": "data", - "dest": [ - { - "extension_group": "default", - "extension": "agora_rtc" - } - ] - } - ] - }, - { - "extension_group": "default", - "extension": "interrupt_detector", - "cmd": [ - { - "name": "flush", - "dest": [ - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt" - } - ] - } - ] - } - ] - }, - { - "name": "va_gemini_azure", - "auto_start": false, - "nodes": [ - { - "type": "extension", - "extension_group": "default", - "addon": "agora_rtc", - "name": "agora_rtc", - "property": { - "app_id": "${env:AGORA_APP_ID}", - "token": "", - "channel": "ten_agent_test", - "stream_id": 1234, - "remote_stream_id": 123, - "subscribe_audio": true, - "publish_audio": true, - "publish_data": true, - "enable_agora_asr": true, - "agora_asr_vendor_name": "microsoft", - "agora_asr_language": "en-US", - "agora_asr_vendor_key": "${env:AZURE_STT_KEY}", - "agora_asr_vendor_region": "${env:AZURE_STT_REGION}", - "agora_asr_session_control_file_path": "session_control.conf" - } - }, - { - "type": "extension", - "extension_group": "default", - "addon": "interrupt_detector", - "name": "interrupt_detector" - }, - { - "type": "extension", - "extension_group": "llm", - "addon": "gemini_llm_python", - "name": "gemini_llm", - "property": { - "api_key": "$GEMINI_API_KEY", - "greeting": "TEN Agent connected. How can I help you today?", - "max_memory_length": 10, - "max_output_tokens": 512, - "model": "gemini-1.5-flash", - "prompt": "", - "temperature": 1.0, - "top_k": 40, - "top_p": 0.95 - } - }, - { - "type": "extension", - "extension_group": "tts", - "addon": "azure_tts", - "name": "azure_tts", - "property": { - "azure_subscription_key": "${env:AZURE_TTS_KEY}", - "azure_subscription_region": "${env:AZURE_TTS_REGION}", - "azure_synthesis_voice_name": "en-US-AndrewMultilingualNeural" - } - }, - { - "type": "extension", - "extension_group": "transcriber", - "addon": "message_collector", - "name": "message_collector" - } - ], - "connections": [ - { - "extension_group": "default", - "extension": "agora_rtc", - "data": [ - { - "name": "text_data", - "dest": [ - { - "extension_group": "default", - "extension": "interrupt_detector" - }, - { - "extension_group": "llm", - "extension": "gemini_llm" + "extension_group": "llm", + "extension": "gemini_llm" }, { "extension_group": "transcriber", @@ -3005,498 +2526,8 @@ ] }, { - "name": "va_openai_v2v", - "auto_start": true, - "nodes": [ - { - "type": "extension", - "extension_group": "rtc", - "addon": "agora_rtc", - "name": "agora_rtc", - "property": { - "app_id": "${env:AGORA_APP_ID}", - "token": "", - "channel": "ten_agent_test", - "stream_id": 1234, - "remote_stream_id": 123, - "subscribe_audio": true, - "subscribe_video": true, - "publish_audio": true, - "publish_data": true, - "subscribe_audio_sample_rate": 24000, - "subscribe_video_pix_fmt": 4 - } - }, - { - "type": "extension", - "extension_group": "llm", - "addon": "openai_v2v_python", - "name": "openai_v2v_python", - "property": { - "api_key": "${env:OPENAI_REALTIME_API_KEY}", - "temperature": 0.9, - "model": "gpt-4o-realtime-preview", - "max_tokens": 2048, - "voice": "alloy", - "language": "en-US", - "server_vad": true, - "dump": true, - "history": 10 - } - }, - { - "type": "extension", - "extension_group": "llm", - "addon": "openai_chatgpt_python", - "name": "openai_chatgpt", - "property": { - "base_url": "${env:OPENAI_API_BASE}", - "api_key": "${env:OPENAI_API_KEY}", - "frequency_penalty": 0.9, - "model": "${env:OPENAI_MODEL}", - "max_tokens": 512, - "prompt": "", - "proxy_url": "${env:OPENAI_PROXY_URL}", - "greeting": "TEN Agent connected. How can I help you today?", - "checking_vision_text_items": "[\"Let me take a look...\",\"Let me check your camera...\",\"Please wait for a second...\"]", - "max_memory_length": 10, - "enable_tools": true - } - }, - { - "type": "extension", - "extension_group": "transcriber", - "addon": "message_collector", - "name": "message_collector" - }, - { - "type": "extension", - "extension_group": "tools", - "addon": "weatherapi_tool_python", - "name": "weatherapi_tool_python", - "property": { - "api_key": "${env:WEATHERAPI_API_KEY}" - } - }, - { - "type": "extension", - "extension_group": "tools", - "addon": "bingsearch_tool_python", - "name": "bingsearch_tool_python", - "property": { - "api_key": "${env:BING_API_KEY}" - } - }, - { - "type": "extension", - "extension_group": "tools", - "addon": "vision_analyze_tool_python", - "name": "vision_analyze_tool_python" - } - ], - "connections": [ - { - "extension_group": "rtc", - "extension": "agora_rtc", - "audio_frame": [ - { - "name": "pcm_frame", - "dest": [ - { - "extension_group": "llm", - "extension": "openai_v2v_python" - } - ] - } - ], - "video_frame": [ - { - "name": "video_frame", - "dest": [ - { - "extension_group": "tools", - "extension": "vision_analyze_tool_python" - } - ] - } - ] - }, - { - "extension_group": "tools", - "extension": "weatherapi_tool_python", - "cmd": [ - { - "name": "tool_register", - "dest": [ - { - "extension_group": "llm", - "extension": "openai_v2v_python" - } - ] - } - ] - }, - { - "extension_group": "tools", - "extension": "bingsearch_tool_python", - "cmd": [ - { - "name": "tool_register", - "dest": [ - { - "extension_group": "llm", - "extension": "openai_v2v_python" - } - ] - } - ] - }, - { - "extension_group": "tools", - "extension": "vision_analyze_tool_python", - "cmd": [ - { - "name": "tool_register", - "dest": [ - { - "extension_group": "llm", - "extension": "openai_v2v_python" - } - ] - }, - { - "name": "chat_completion_call", - "dest": [ - { - "extension_group": "llm", - "extension": "openai_chatgpt" - } - ] - } - ] - }, - { - "extension_group": "llm", - "extension": "openai_v2v_python", - "audio_frame": [ - { - "name": "pcm_frame", - "dest": [ - { - "extension_group": "rtc", - "extension": "agora_rtc" - } - ] - } - ], - "data": [ - { - "name": "text_data", - "dest": [ - { - "extension_group": "transcriber", - "extension": "message_collector" - } - ] - } - ], - "cmd": [ - { - "name": "flush", - "dest": [ - { - "extension_group": "rtc", - "extension": "agora_rtc" - } - ] - }, - { - "name": "tool_call_get_current_weather", - "dest": [ - { - "extension_group": "tools", - "extension": "weatherapi_tool_python", - "msg_conversion": { - "type": "per_property", - "keep_original": true, - "rules": [ - { - "path": "_ten.name", - "conversion_mode": "fixed_value", - "value": "tool_call" - } - ] - } - } - ] - }, - { - "name": "tool_call_get_past_weather", - "dest": [ - { - "extension_group": "tools", - "extension": "weatherapi_tool_python", - "msg_conversion": { - "type": "per_property", - "keep_original": true, - "rules": [ - { - "path": "_ten.name", - "conversion_mode": "fixed_value", - "value": "tool_call" - } - ] - } - } - ] - }, - { - "name": "tool_call_get_future_weather", - "dest": [ - { - "extension_group": "tools", - "extension": "weatherapi_tool_python", - "msg_conversion": { - "type": "per_property", - "keep_original": true, - "rules": [ - { - "path": "_ten.name", - "conversion_mode": "fixed_value", - "value": "tool_call" - } - ] - } - } - ] - }, - { - "name": "tool_call_bing_search", - "dest": [ - { - "extension_group": "tools", - "extension": "bingsearch_tool_python", - "msg_conversion": { - "type": "per_property", - "keep_original": true, - "rules": [ - { - "path": "_ten.name", - "conversion_mode": "fixed_value", - "value": "tool_call" - } - ] - } - } - ] - }, - { - "name": "tool_call_get_vision_chat_completion", - "dest": [ - { - "extension_group": "tools", - "extension": "vision_analyze_tool_python", - "msg_conversion": { - "type": "per_property", - "keep_original": true, - "rules": [ - { - "path": "_ten.name", - "conversion_mode": "fixed_value", - "value": "tool_call" - } - ] - } - } - ] - } - ] - }, - { - "extension_group": "transcriber", - "extension": "message_collector", - "data": [ - { - "name": "data", - "dest": [ - { - "extension_group": "rtc", - "extension": "agora_rtc" - } - ] - } - ] - } - ] - }, - { - "name": "va_simple_openai_v2v_fish", - "auto_start": false, - "nodes": [ - { - "type": "extension", - "extension_group": "rtc", - "addon": "agora_rtc", - "name": "agora_rtc", - "property": { - "app_id": "${env:AGORA_APP_ID}", - "token": "", - "channel": "ten_agent_test", - "stream_id": 1234, - "remote_stream_id": 123, - "subscribe_audio": true, - "publish_audio": true, - "publish_data": true, - "subscribe_audio_sample_rate": 24000, - "enable_agora_asr": true, - "agora_asr_vendor_name": "microsoft", - "agora_asr_language": "en-US", - "agora_asr_vendor_key": "${env:AZURE_STT_KEY}", - "agora_asr_vendor_region": "${env:AZURE_STT_REGION}", - "agora_asr_session_control_file_path": "session_control.conf" - } - }, - { - "type": "extension", - "extension_group": "llm", - "addon": "openai_v2v_python", - "name": "openai_v2v_python", - "property": { - "api_key": "${env:OPENAI_REALTIME_API_KEY}", - "temperature": 0.9, - "model": "gpt-4o-realtime-preview", - "max_tokens": 2048, - "audio_out": false, - "input_transcript": false, - "language": "en-US", - "server_vad": true, - "dump": true, - "history": 10 - } - }, - { - "type": "extension", - "extension_group": "tts", - "addon": "fish_audio_tts", - "name": "fish_audio_tts", - "property": { - "api_key": "${env:FISH_AUDIO_TTS_KEY}", - "model_id": "d8639b5cc95548f5afbcfe22d3ba5ce5", - "optimize_streaming_latency": true, - "request_timeout_seconds": 30, - "base_url": "https://api.fish.audio" - } - }, - { - "type": "extension", - "extension_group": "transcriber", - "addon": "message_collector", - "name": "message_collector" - } - ], - "connections": [ - { - "extension_group": "rtc", - "extension": "agora_rtc", - "audio_frame": [ - { - "name": "pcm_frame", - "dest": [ - { - "extension_group": "llm", - "extension": "openai_v2v_python" - } - ] - } - ], - "data": [ - { - "name": "text_data", - "dest": [ - { - "extension_group": "transcriber", - "extension": "message_collector" - } - ] - } - ] - }, - { - "extension_group": "llm", - "extension": "openai_v2v_python", - "data": [ - { - "name": "text_data", - "dest": [ - { - "extension_group": "transcriber", - "extension": "message_collector" - }, - { - "extension_group": "tts", - "extension": "fish_audio_tts" - } - ] - } - ], - "cmd": [ - { - "name": "flush", - "dest": [ - { - "extension_group": "tts", - "extension": "fish_audio_tts" - } - ] - } - ] - }, - { - "extension_group": "tts", - "extension": "fish_audio_tts", - "audio_frame": [ - { - "name": "pcm_frame", - "dest": [ - { - "extension_group": "rtc", - "extension": "agora_rtc" - } - ] - } - ], - "cmd": [ - { - "name": "flush", - "dest": [ - { - "extension_group": "rtc", - "extension": "agora_rtc" - } - ] - } - ] - }, - { - "extension_group": "transcriber", - "extension": "message_collector", - "data": [ - { - "name": "data", - "dest": [ - { - "extension_group": "rtc", - "extension": "agora_rtc" - } - ] - } - ] - } - ] - }, - { - "name": "va_openai_v2v_fish", - "auto_start": false, + "name": "va_simple_openai_v2v_fish", + "auto_start": false, "nodes": [ { "type": "extension", @@ -3557,24 +2588,6 @@ "extension_group": "transcriber", "addon": "message_collector", "name": "message_collector" - }, - { - "type": "extension", - "extension_group": "tools", - "addon": "weatherapi_tool_python", - "name": "weatherapi_tool_python", - "property": { - "api_key": "${env:WEATHERAPI_API_KEY}" - } - }, - { - "type": "extension", - "extension_group": "tools", - "addon": "bingsearch_tool_python", - "name": "bingsearch_tool_python", - "property": { - "api_key": "${env:BING_API_KEY}" - } } ], "connections": [ @@ -3604,36 +2617,6 @@ } ] }, - { - "extension_group": "tools", - "extension": "weatherapi_tool_python", - "cmd": [ - { - "name": "tool_register", - "dest": [ - { - "extension_group": "llm", - "extension": "openai_v2v_python" - } - ] - } - ] - }, - { - "extension_group": "tools", - "extension": "bingsearch_tool_python", - "cmd": [ - { - "name": "tool_register", - "dest": [ - { - "extension_group": "llm", - "extension": "openai_v2v_python" - } - ] - } - ] - }, { "extension_group": "llm", "extension": "openai_v2v_python", @@ -3651,94 +2634,14 @@ } ] } - ], - "cmd": [ - { - "name": "flush", - "dest": [ - { - "extension_group": "tts", - "extension": "fish_audio_tts" - } - ] - }, - { - "name": "tool_call_get_current_weather", - "dest": [ - { - "extension_group": "tools", - "extension": "weatherapi_tool_python", - "msg_conversion": { - "type": "per_property", - "keep_original": true, - "rules": [ - { - "path": "_ten.name", - "conversion_mode": "fixed_value", - "value": "tool_call" - } - ] - } - } - ] - }, - { - "name": "tool_call_get_past_weather", - "dest": [ - { - "extension_group": "tools", - "extension": "weatherapi_tool_python", - "msg_conversion": { - "type": "per_property", - "keep_original": true, - "rules": [ - { - "path": "_ten.name", - "conversion_mode": "fixed_value", - "value": "tool_call" - } - ] - } - } - ] - }, - { - "name": "tool_call_get_future_weather", - "dest": [ - { - "extension_group": "tools", - "extension": "weatherapi_tool_python", - "msg_conversion": { - "type": "per_property", - "keep_original": true, - "rules": [ - { - "path": "_ten.name", - "conversion_mode": "fixed_value", - "value": "tool_call" - } - ] - } - } - ] - }, - { - "name": "tool_call_bing_search", - "dest": [ - { - "extension_group": "tools", - "extension": "bingsearch_tool_python", - "msg_conversion": { - "type": "per_property", - "keep_original": true, - "rules": [ - { - "path": "_ten.name", - "conversion_mode": "fixed_value", - "value": "tool_call" - } - ] - } + ], + "cmd": [ + { + "name": "flush", + "dest": [ + { + "extension_group": "tts", + "extension": "fish_audio_tts" } ] } @@ -4713,297 +3616,6 @@ } ] }, - { - "name": "camera_va_openai_azure_rtm", - "auto_start": true, - "nodes": [ - { - "type": "extension", - "extension_group": "default", - "addon": "agora_rtc", - "name": "agora_rtc", - "property": { - "app_id": "${env:AGORA_APP_ID}", - "token": "", - "channel": "ten_agent_test", - "stream_id": 1234, - "remote_stream_id": 123, - "subscribe_audio": true, - "subscribe_video": true, - "publish_audio": true, - "publish_data": true, - "enable_agora_asr": true, - "agora_asr_vendor_name": "microsoft", - "agora_asr_language": "en-US", - "agora_asr_vendor_key": "${env:AZURE_STT_KEY}", - "agora_asr_vendor_region": "${env:AZURE_STT_REGION}", - "agora_asr_session_control_file_path": "session_control.conf", - "subscribe_video_pix_fmt": 4 - } - }, - { - "type": "extension", - "extension_group": "rtm", - "addon": "agora_rtm", - "name": "agora_rtm", - "property": { - "channel": "ten_agent_test", - "app_id": "${env:AGORA_APP_ID}", - "token": "", - "user_id": "0", - "rtm_enabled": true, - "rtm_is_stream": false, - "rtm_presence_enabled": false, - "rtm_metadata_enabled": false, - "rtm_lock_enabled": false - } - }, - { - "type": "extension", - "extension_group": "default", - "addon": "interrupt_detector", - "name": "interrupt_detector" - }, - { - "type": "extension", - "extension_group": "chatgpt", - "addon": "openai_chatgpt_python", - "name": "openai_chatgpt", - "property": { - "base_url": "${env:OPENAI_API_BASE}", - "api_key": "${env:OPENAI_API_KEY}", - "frequency_penalty": 0.9, - "model": "${env:OPENAI_MODEL}", - "max_tokens": 512, - "prompt": "", - "proxy_url": "${env:OPENAI_PROXY_URL}", - "greeting": "TEN Agent connected. How can I help you today?", - "checking_vision_text_items": "[\"Let me take a look...\",\"Let me check your camera...\",\"Please wait for a second...\"]", - "max_memory_length": 10, - "enable_tools": true - } - }, - { - "type": "extension", - "extension_group": "tts", - "addon": "azure_tts", - "name": "azure_tts", - "property": { - "azure_subscription_key": "${env:AZURE_TTS_KEY}", - "azure_subscription_region": "${env:AZURE_TTS_REGION}", - "azure_synthesis_voice_name": "en-US-AndrewMultilingualNeural" - } - }, - { - "type": "extension", - "extension_group": "message_collector_rtm", - "addon": "message_collector_rtm", - "name": "message_collector_rtm" - } - ], - "connections": [ - { - "extension_group": "default", - "extension": "agora_rtc", - "data": [ - { - "name": "text_data", - "dest": [ - { - "extension_group": "default", - "extension": "interrupt_detector" - }, - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt" - }, - { - "extension_group": "message_collector_rtm", - "extension": "message_collector_rtm" - } - ] - } - ], - "cmd": [ - { - "name": "on_user_joined", - "dest": [ - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt" - } - ] - }, - { - "name": "on_user_left", - "dest": [ - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt" - } - ] - }, - { - "name": "on_user_audio_track_state_changed", - "dest": [ - { - "extension_group": "message_collector_rtm", - "extension": "message_collector_rtm" - } - ] - } - ] - }, - { - "extension": "agora_rtm", - "extension_group": "rtm", - "data": [ - { - "name": "rtm_message_event", - "dest": [ - { - "extension_group": "message_collector_rtm", - "extension": "message_collector_rtm" - } - ] - }, - { - "name": "rtm_storage_event", - "dest": [ - { - "extension_group": "message_collector_rtm", - "extension": "message_collector_rtm" - } - ] - }, - { - "name": "rtm_presence_event", - "dest": [ - { - "extension_group": "message_collector_rtm", - "extension": "message_collector_rtm" - } - ] - }, - { - "name": "rtm_lock_event", - "dest": [ - { - "extension_group": "message_collector_rtm", - "extension": "message_collector_rtm" - } - ] - } - ] - }, - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt", - "data": [ - { - "name": "text_data", - "dest": [ - { - "extension_group": "tts", - "extension": "azure_tts" - }, - { - "extension_group": "message_collector_rtm", - "extension": "message_collector_rtm" - } - ] - } - ], - "cmd": [ - { - "name": "flush", - "dest": [ - { - "extension_group": "tts", - "extension": "azure_tts" - } - ] - } - ] - }, - { - "extension_group": "tts", - "extension": "azure_tts", - "audio_frame": [ - { - "name": "pcm_frame", - "dest": [ - { - "extension_group": "default", - "extension": "agora_rtc" - } - ] - } - ], - "cmd": [ - { - "name": "flush", - "dest": [ - { - "extension_group": "default", - "extension": "agora_rtc" - } - ] - } - ] - }, - { - "extension_group": "message_collector_rtm", - "extension": "message_collector_rtm", - "data": [ - { - "name": "text_data", - "dest": [ - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt" - } - ] - } - ], - "cmd": [ - { - "name": "publish", - "dest": [ - { - "extension_group": "rtm", - "extension": "agora_rtm" - } - ] - }, - { - "name": "set_presence_state", - "dest": [ - { - "extension_group": "rtm", - "extension": "agora_rtm" - } - ] - } - ] - }, - { - "extension_group": "default", - "extension": "interrupt_detector", - "cmd": [ - { - "name": "flush", - "dest": [ - { - "extension_group": "chatgpt", - "extension": "openai_chatgpt" - } - ] - } - ] - } - ] - }, { "name": "va_openai_minimax", "auto_start": false, diff --git a/agents/manifest-lock.json b/agents/manifest-lock.json deleted file mode 100644 index 0c44a944..00000000 --- a/agents/manifest-lock.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "version": 1, - "packages": [ - { - "type": "system", - "name": "ten_runtime_go", - "version": "0.4.1", - "hash": "716a281c46e58939d5f91599d095840290790d1dd34b0296df8db4422907e053", - "dependencies": [ - { - "type": "system", - "name": "ten_runtime" - } - ], - "supports": [ - { - "os": "linux", - "arch": "x64" - } - ] - }, - { - "type": "extension", - "name": "py_init_extension_cpp", - "version": "0.4.1", - "hash": "8fdc759b3d64920362cb1cd9daa0a85826a6e084ca7cd595afe8db16aeb352f7", - "dependencies": [ - { - "type": "system", - "name": "ten_runtime" - }, - { - "type": "system", - "name": "ten_runtime_python" - } - ], - "supports": [ - { - "os": "linux", - "arch": "x64" - } - ] - }, - { - "type": "extension", - "name": "agora_rtc", - "version": "0.9.0-rc1", - "hash": "1e779f354007dbda307b00b7a23798c82805ee0fb1ab7ed4dd90f913b4e8579c", - "dependencies": [ - { - "type": "system", - "name": "ten_runtime" - }, - { - "type": "system", - "name": "agora_rtc_sdk" - }, - { - "type": "system", - "name": "nlohmann_json" - } - ], - "supports": [ - { - "os": "linux", - "arch": "x64" - } - ] - }, - { - "type": "extension", - "name": "agora_sess_ctrl", - "version": "0.3.0-rc1", - "hash": "47e9adcbe209b5c736c1b2d78b59819ca32ea5fdea23669ba79d47d00568046d", - "dependencies": [ - { - "type": "system", - "name": "ten_runtime" - } - ], - "supports": [ - { - "os": "linux", - "arch": "x64" - } - ] - }, - { - "type": "system", - "name": "azure_speech_sdk", - "version": "1.38.0", - "hash": "66a50ef361f8190fa0595d8298c135e13b73796d57174a0802631263a8f15806", - "supports": [ - { - "os": "linux", - "arch": "x64" - } - ] - }, - { - "type": "extension", - "name": "azure_tts", - "version": "0.6.0", - "hash": "6b4ef21b16c9931721def16a71b0a478fc97317027a14e1a13f255b7f291338b", - "dependencies": [ - { - "type": "system", - "name": "ten_runtime" - }, - { - "type": "system", - "name": "azure_speech_sdk" - } - ], - "supports": [] - }, - { - "type": "extension", - "name": "agora_rtm", - "version": "0.3.0", - "hash": "0a266486736ae3b25158237028d33ab6132d43e36d2a69c4307c51a56b76c209", - "dependencies": [ - { - "type": "system", - "name": "ten_runtime" - }, - { - "type": "system", - "name": "nlohmann_json" - } - ], - "supports": [] - }, - { - "type": "system", - "name": "ten_runtime", - "version": "0.4.1", - "hash": "2d87b932a07f2375ca5fa019d0e518af55ac17de5d41ca82d66102a18cdc5d3f", - "supports": [ - { - "os": "linux", - "arch": "x64" - } - ] - }, - { - "type": "system", - "name": "nlohmann_json", - "version": "3.11.2", - "hash": "72b15822c7ea9deef5e7ad96216ac55e93f11b00466dd1943afd5ee276e99d19", - "supports": [] - }, - { - "type": "system", - "name": "agora_rtc_sdk", - "version": "4.1.39+build397657", - "hash": "b2e9f4cfc93e3fb15108fc285b8162ccf36b6d7fd2bbefe4d4374290badf8d4e", - "supports": [ - { - "os": "linux", - "arch": "x64" - } - ] - }, - { - "type": "system", - "name": "ten_runtime_python", - "version": "0.4.1", - "hash": "b805a787aa3f0bf4b499d7a1f5c8af503d1ade1db284a6159a9c971dd1be642c", - "dependencies": [ - { - "type": "system", - "name": "ten_runtime" - } - ], - "supports": [ - { - "os": "linux", - "arch": "x64" - } - ] - } - ] -} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index ceffc118..2d82db23 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,11 @@ services: ten_agent_dev: - image: ghcr.io/ten-framework/ten_agent_build:0.2.3 + image: ghcr.io/ten-framework/ten_agent_build:0.2.4 container_name: ten_agent_dev platform: linux/amd64 tty: true stdin_open: true restart: always - command: "make run-gd-server" ports: - "${GRAPH_DESIGNER_SERVER_PORT}:${GRAPH_DESIGNER_SERVER_PORT}" - "${SERVER_PORT}:${SERVER_PORT}" diff --git a/docs/readmes/README-CN.md b/docs/readmes/README-CN.md index bff2d576..b77e366f 100644 --- a/docs/readmes/README-CN.md +++ b/docs/readmes/README-CN.md @@ -157,12 +157,12 @@ docker compose up ```bash docker exec -it ten_agent_dev bash -make build +task use AGENT=agents/examples/demo ``` #### 5.开启服务 ```bash -make run-server +task run ``` ### 构建完成 🎉 diff --git a/docs/readmes/README-ES.md b/docs/readmes/README-ES.md index b870e586..a110382b 100644 --- a/docs/readmes/README-ES.md +++ b/docs/readmes/README-ES.md @@ -128,13 +128,14 @@ docker compose up Abre una nueva ventana de terminal, entra al contenedor y construye el agente: ```bash docker exec -it ten_agent_dev bash -make build + +task use AGENT=agents/examples/demo ``` #### 5. Iniciar el servidor -Una vez que la construcción esté completa, ejecuta `make run-server` en el puerto `8080`: +Una vez que la construcción esté completa, ejecuta `task run` en el puerto `8080/49483`: ```bash -make run-server +task run ``` ### Finalizar y verificar 🎉 diff --git a/docs/readmes/README-FR.md b/docs/readmes/README-FR.md index e9e26688..3027a137 100644 --- a/docs/readmes/README-FR.md +++ b/docs/readmes/README-FR.md @@ -128,13 +128,14 @@ docker compose up Ouvrez une nouvelle fenêtre de terminal, entrez dans le conteneur et construisez l'agent : ```bash docker exec -it ten_agent_dev bash -make build + +task use AGENT=agents/examples/demo ``` #### 5. Démarrer le serveur -Une fois la construction terminée, exécutez `make run-server` sur le port `8080` : +Une fois la construction terminée, exécutez `task run` sur le port `8080/48493` : ```bash -make run-server +task run ``` ### Terminé et vérifié 🎉 diff --git a/docs/readmes/README-IT.md b/docs/readmes/README-IT.md index cff7f5b1..48656468 100644 --- a/docs/readmes/README-IT.md +++ b/docs/readmes/README-IT.md @@ -127,13 +127,14 @@ docker compose up Apri una finestra di terminale separata, entra nel container e costruisci l'agente: ```bash docker exec -it ten_agent_dev bash -make build + +task use AGENT=agents/examples/demo ``` #### 5. Avvia il server -Una volta completata la build, esegui `make run-server` sulla porta `8080`: +Una volta completata la build, esegui `task run` sulla porta `8080/49483`: ```bash -make run-server +task run ``` ### Finisci e verifica 🎉 diff --git a/docs/readmes/README-JP.md b/docs/readmes/README-JP.md index 14ed3d49..1512a088 100644 --- a/docs/readmes/README-JP.md +++ b/docs/readmes/README-JP.md @@ -129,13 +129,14 @@ docker compose up 別のターミナルウィンドウを開き、コンテナに入ってエージェントをビルドします: ```bash docker exec -it ten_agent_dev bash -make build + +task use AGENT=agents/examples/demo ``` #### 5. サーバーの起動 -ビルドが完了したら、ポート`8080`で`make run-server`を実行します: +ビルドが完了したら、ポート`8080/49483`で`task run`を実行します: ```bash -make run-server +task run ``` ### 完了と確認 🎉 diff --git a/docs/readmes/README-KR.md b/docs/readmes/README-KR.md index ea41f6c7..54d3c170 100644 --- a/docs/readmes/README-KR.md +++ b/docs/readmes/README-KR.md @@ -129,13 +129,14 @@ docker compose up Open up a separate terminal window, enter the container and build the agent: ```bash docker exec -it ten_agent_dev bash -make build + +task use AGENT=agents/examples/demo ``` #### 5. Start the server -Once the build is done, `make run-server` on port `8080`: +Once the build is done, `task run` on port `8080/49483`: ```bash -make run-server +task run ``` ### Finish and verify 🎉