2828
2929from veadk .config import getenv
3030from 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)
3636from veadk .evaluation import EvalSetRecorder
3737from veadk .knowledgebase import KnowledgeBase
4747logger = get_logger (__name__ )
4848
4949
50+ def _parse_user_model_extra_config () -> dict :
51+ import json
52+
53+ extra_headers = getenv ("MODEL_AGENT_EXTRA_HEADERS" , {}, allow_false_values = True )
54+ extra_body = getenv ("MODEL_AGENT_EXTRA_BODY" , {}, allow_false_values = True )
55+
56+ if extra_headers :
57+ extra_headers = json .loads (extra_headers )
58+ if extra_body :
59+ extra_body = json .loads (extra_body )
60+ if extra_body .get ("expire_at" , 0 ):
61+ import time
62+
63+ extra_body ["expire_at" ] = (
64+ int (time .time ()) + int (extra_body ["expire_at" ]) * 3600
65+ )
66+
67+ return {
68+ "extra_headers" : extra_headers ,
69+ "extra_body" : extra_body ,
70+ }
71+
72+
5073class Agent (LlmAgent ):
5174 """LLM-based Agent with Volcengine capabilities."""
5275
@@ -74,7 +97,7 @@ class Agent(LlmAgent):
7497 model_api_key : str = Field (default_factory = lambda : getenv ("MODEL_AGENT_API_KEY" ))
7598 """The api key of the model for agent running."""
7699
77- model_extra_config : dict = Field (default_factory = dict )
100+ model_extra_config : dict = Field (default_factory = _parse_user_model_extra_config )
78101 """The extra config to include in the model requests."""
79102
80103 tools : list [ToolUnion ] = []
@@ -101,11 +124,21 @@ class Agent(LlmAgent):
101124 def model_post_init (self , __context : Any ) -> None :
102125 super ().model_post_init (None ) # for sub_agents init
103126
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
127+ # combine user model config with VeADK defaults
128+ headers = DEFAULT_MODEL_EXTRA_CONFIG ["extra_headers" ].copy ()
129+ body = DEFAULT_MODEL_EXTRA_CONFIG ["extra_body" ].copy ()
130+
131+ if self .model_extra_config :
132+ user_headers = self .model_extra_config .get ("extra_headers" , {})
133+ user_body = self .model_extra_config .get ("extra_body" , {})
134+
135+ headers |= user_headers
136+ body |= user_body
137+
138+ self .model_extra_config |= {
139+ "extra_headers" : headers ,
140+ "extra_body" : body ,
141+ }
109142
110143 if not self .model :
111144 self .model = LiteLlm (
0 commit comments