Skip to content

Commit 91c3329

Browse files
chore(config): add model config yaml (#123)
* chore(config): add model config yaml * fix comfig.yaml
1 parent ffb9801 commit 91c3329

File tree

7 files changed

+71
-18
lines changed

7 files changed

+71
-18
lines changed

config.yaml.full

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ model:
55
name: doubao-seed-1-6-250615
66
api_base: https://ark.cn-beijing.volces.com/api/v3/
77
api_key:
8+
encrypted: true # true | false
9+
caching: enabled # enabled | disabled
10+
max_llm_calls: 100
811
# [optional] for llm-as-a-judge a evaluation
912
judge:
1013
name: doubao-seed-1-6-250615

config.yaml.simple

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,7 @@ model:
33
provider: openai
44
name: doubao-seed-1-6-250615
55
api_base: https://ark.cn-beijing.volces.com/api/v3/
6-
api_key:
6+
api_key:
7+
encrypted: true # true | false
8+
caching: enabled # enabled | disabled
9+
max_llm_calls: 100

docs/docs/agent.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Agent 中主要包括如下属性:
1515
| model_provider | str | Agent 中内置模型的提供商,默认从环境变量中获取 |
1616
| model_api_base | str | Agent 中内置模型的 API Base,默认从环境变量中获取 |
1717
| model_api_key | str | Agent 中内置模型的 API Key,默认从环境变量中获取 |
18+
| model_extra_config | dict | Agent 进行模型请求时的额外参数,Key 值为属性名,Value 值为属性值 |
1819
| tools | list | Function call 中的工具列表,既可以是本地工具,也可以是 MCP 工具 |
1920
| sub_agents | list | 子 Agent 列表,用于多 Agent 之间交互 |
2021
| knowledgebase | KnowledgeBase | 知识库,后端支持本地内存(local)和数据库(opensearch、viking、redis、mysql),通常设置为一个能够检索的向量数据库 |

tests/test_agent.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from google.adk.tools import load_memory
1616

1717
from veadk import Agent
18-
from veadk.consts import DEFAULT_MODEL_EXTRA_HEADERS
18+
from veadk.consts import DEFAULT_MODEL_EXTRA_CONFIG
1919
from veadk.knowledgebase import KnowledgeBase
2020
from veadk.memory.long_term_memory import LongTermMemory
2121
from veadk.tools import load_knowledgebase_tool
@@ -27,14 +27,17 @@ def test_agent():
2727
long_term_memory = LongTermMemory(backend="local")
2828
tracer = OpentelemetryTracer()
2929

30-
model_extra_headers = {"test-header": "test-value"}
30+
extra_config = {
31+
"extra_headers": {"thinking": "test"},
32+
"extra_body": {"content": "test"},
33+
}
3134

3235
agent = Agent(
3336
model_name="test_model_name",
3437
model_provider="test_model_provider",
3538
model_api_key="test_model_api_key",
3639
model_api_base="test_model_api_base",
37-
model_extra_headers=model_extra_headers,
40+
model_extra_config=extra_config,
3841
tools=[],
3942
sub_agents=[],
4043
knowledgebase=knowledgebase,
@@ -43,10 +46,13 @@ def test_agent():
4346
serve_url="",
4447
)
4548

46-
model_extra_headers |= DEFAULT_MODEL_EXTRA_HEADERS
47-
4849
assert agent.model.model == f"{agent.model_provider}/{agent.model_name}"
49-
assert agent.model_extra_headers == model_extra_headers
50+
51+
expected_config = DEFAULT_MODEL_EXTRA_CONFIG.copy()
52+
expected_config["extra_headers"] |= extra_config["extra_headers"]
53+
expected_config["extra_body"] |= extra_config["extra_body"]
54+
55+
assert agent.model_extra_config == expected_config
5056

5157
assert agent.knowledgebase == knowledgebase
5258
assert agent.knowledgebase.backend == "local"

veadk/agent.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828

2929
from veadk.config import getenv
3030
from veadk.consts import (
31-
DEFAULT_MODEL_AGENT_PROVIDER,
3231
DEFAULT_MODEL_AGENT_API_BASE,
3332
DEFAULT_MODEL_AGENT_NAME,
34-
DEFAULT_MODEL_EXTRA_HEADERS,
33+
DEFAULT_MODEL_AGENT_PROVIDER,
34+
DEFAULT_MODEL_EXTRA_CONFIG,
3535
)
3636
from veadk.evaluation import EvalSetRecorder
3737
from veadk.knowledgebase import KnowledgeBase
@@ -101,11 +101,23 @@ class Agent(LlmAgent):
101101
def model_post_init(self, __context: Any) -> None:
102102
super().model_post_init(None) # for sub_agents init
103103

104-
# add model request source (veadk) in extra headers
105-
if self.model_extra_config and "extra_headers" in self.model_extra_config:
106-
self.model_extra_config["extra_headers"] |= DEFAULT_MODEL_EXTRA_HEADERS
107-
else:
108-
self.model_extra_config["extra_headers"] = DEFAULT_MODEL_EXTRA_HEADERS
104+
# combine user model config with VeADK defaults
105+
headers = DEFAULT_MODEL_EXTRA_CONFIG["extra_headers"].copy()
106+
body = DEFAULT_MODEL_EXTRA_CONFIG["extra_body"].copy()
107+
108+
if self.model_extra_config:
109+
user_headers = self.model_extra_config.get("extra_headers", {})
110+
user_body = self.model_extra_config.get("extra_body", {})
111+
112+
headers |= user_headers
113+
body |= user_body
114+
115+
self.model_extra_config |= {
116+
"extra_headers": headers,
117+
"extra_body": body,
118+
}
119+
120+
logger.info(f"Model extra config: {self.model_extra_config}")
109121

110122
if not self.model:
111123
self.model = LiteLlm(

veadk/consts.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,27 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15+
import time
16+
17+
from veadk.config import getenv
1518
from veadk.version import VERSION
1619

1720
DEFAULT_MODEL_AGENT_NAME = "doubao-seed-1-6-250615"
1821
DEFAULT_MODEL_AGENT_PROVIDER = "openai"
1922
DEFAULT_MODEL_AGENT_API_BASE = "https://ark.cn-beijing.volces.com/api/v3/"
20-
DEFAULT_MODEL_EXTRA_HEADERS = {"veadk-source": "veadk", "veadk-version": VERSION}
23+
DEFAULT_MODEL_EXTRA_CONFIG = {
24+
"extra_headers": {
25+
"x-is-encrypted": getenv("MODEL_AGENT_ENCRYPTED", "true"),
26+
"veadk-source": "veadk",
27+
"veadk-version": VERSION,
28+
},
29+
"extra_body": {
30+
"caching": {
31+
"type": getenv("MODEL_AGENT_CACHING", "enabled"),
32+
},
33+
"expire_at": int(time.time()) + 3600, # expire after 1 hour
34+
},
35+
}
2136

2237
DEFAULT_APMPLUS_OTEL_EXPORTER_ENDPOINT = "http://apmplus-cn-beijing.volces.com:4317"
2338
DEFAULT_APMPLUS_OTEL_EXPORTER_SERVICE_NAME = "veadk_tracing"

veadk/runner.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,13 @@
2727
from veadk.agents.loop_agent import LoopAgent
2828
from veadk.agents.parallel_agent import ParallelAgent
2929
from veadk.agents.sequential_agent import SequentialAgent
30+
from veadk.config import getenv
3031
from veadk.evaluation import EvalSetRecorder
32+
from veadk.integrations.ve_tos.ve_tos import VeTOS
3133
from veadk.memory.short_term_memory import ShortTermMemory
3234
from veadk.types import MediaMessage
3335
from veadk.utils.logger import get_logger
3436
from veadk.utils.misc import read_png_to_bytes
35-
from veadk.integrations.ve_tos.ve_tos import VeTOS
3637

3738
logger = get_logger(__name__)
3839

@@ -142,7 +143,13 @@ async def _run(
142143
if run_config is not None:
143144
stream_mode = run_config.streaming_mode
144145
else:
145-
run_config = RunConfig(streaming_mode=stream_mode)
146+
run_config = RunConfig(
147+
streaming_mode=stream_mode,
148+
max_llm_calls=int(getenv("MODEL_AGENT_MAX_LLM_CALLS", 100)),
149+
)
150+
151+
logger.info(f"Run config: {run_config}")
152+
146153
try:
147154

148155
async def event_generator():
@@ -231,7 +238,13 @@ async def run_with_raw_message(
231238
session_id: str,
232239
run_config: RunConfig | None = None,
233240
):
234-
run_config = RunConfig() if not run_config else run_config
241+
run_config = (
242+
RunConfig(max_llm_calls=int(getenv("MODEL_AGENT_MAX_LLM_CALLS", 100)))
243+
if not run_config
244+
else run_config
245+
)
246+
247+
logger.info(f"Run config: {run_config}")
235248

236249
await self.short_term_memory.create_session(
237250
app_name=self.app_name, user_id=self.user_id, session_id=session_id

0 commit comments

Comments
 (0)