Zhang Yuxiang

fix: 搜索工具类型的条件判断,确保正确使用BochaAPI和AnspireAPI密钥

@@ -101,10 +101,6 @@ def main(): @@ -101,10 +101,6 @@ def main():
101 st.error("请在您的环境变量中设置MEDIA_ENGINE_API_KEY") 101 st.error("请在您的环境变量中设置MEDIA_ENGINE_API_KEY")
102 logger.error("请在您的环境变量中设置MEDIA_ENGINE_API_KEY") 102 logger.error("请在您的环境变量中设置MEDIA_ENGINE_API_KEY")
103 return 103 return
104 - if (not settings.BOCHA_WEB_SEARCH_API_KEY) and (not settings.ANSPIRE_API_KEY):  
105 - st.error("请在您的环境变量中设置BOCHA_WEB_SEARCH_API_KEY或ANSPIRE_API_KEY")  
106 - logger.error("请在您的环境变量中设置BOCHA_WEB_SEARCH_API_KEY或ANSPIRE_API_KEY")  
107 - return  
108 104
109 # 自动使用配置文件中的API密钥 105 # 自动使用配置文件中的API密钥
110 engine_key = settings.MEDIA_ENGINE_API_KEY 106 engine_key = settings.MEDIA_ENGINE_API_KEY
@@ -112,28 +108,42 @@ def main(): @@ -112,28 +108,42 @@ def main():
112 ansire_key = settings.ANSPIRE_API_KEY 108 ansire_key = settings.ANSPIRE_API_KEY
113 109
114 # 构建 Settings(pydantic_settings风格,优先大写环境变量) 110 # 构建 Settings(pydantic_settings风格,优先大写环境变量)
115 - if bocha_key: 111 + if settings.SEARCH_TOOL_TYPE == "BochaAPI":
  112 + if not bocha_key:
  113 + st.error("请在您的环境变量中设置BOCHA_WEB_SEARCH_API_KEY")
  114 + logger.error("请在您的环境变量中设置BOCHA_WEB_SEARCH_API_KEY")
  115 + return
116 logger.info("使用Bocha搜索API密钥") 116 logger.info("使用Bocha搜索API密钥")
117 config = Settings( 117 config = Settings(
118 MEDIA_ENGINE_API_KEY=engine_key, 118 MEDIA_ENGINE_API_KEY=engine_key,
119 MEDIA_ENGINE_BASE_URL=settings.MEDIA_ENGINE_BASE_URL, 119 MEDIA_ENGINE_BASE_URL=settings.MEDIA_ENGINE_BASE_URL,
120 MEDIA_ENGINE_MODEL_NAME=model_name, 120 MEDIA_ENGINE_MODEL_NAME=model_name,
  121 + SEARCH_TOOL_TYPE="BochaAPI",
121 BOCHA_WEB_SEARCH_API_KEY=bocha_key, 122 BOCHA_WEB_SEARCH_API_KEY=bocha_key,
122 MAX_REFLECTIONS=max_reflections, 123 MAX_REFLECTIONS=max_reflections,
123 SEARCH_CONTENT_MAX_LENGTH=max_content_length, 124 SEARCH_CONTENT_MAX_LENGTH=max_content_length,
124 OUTPUT_DIR="media_engine_streamlit_reports", 125 OUTPUT_DIR="media_engine_streamlit_reports",
125 ) 126 )
126 - elif ansire_key: 127 + elif settings.SEARCH_TOOL_TYPE == "AnspireAPI":
  128 + if not ansire_key:
  129 + st.error("请在您的环境变量中设置ANSPIRE_API_KEY")
  130 + logger.error("请在您的环境变量中设置ANSPIRE_API_KEY")
  131 + return
127 logger.info("使用Anspire搜索API密钥") 132 logger.info("使用Anspire搜索API密钥")
128 config = Settings( 133 config = Settings(
129 MEDIA_ENGINE_API_KEY=engine_key, 134 MEDIA_ENGINE_API_KEY=engine_key,
130 MEDIA_ENGINE_BASE_URL=settings.MEDIA_ENGINE_BASE_URL, 135 MEDIA_ENGINE_BASE_URL=settings.MEDIA_ENGINE_BASE_URL,
131 MEDIA_ENGINE_MODEL_NAME=model_name, 136 MEDIA_ENGINE_MODEL_NAME=model_name,
  137 + SEARCH_TOOL_TYPE="AnspireAPI",
132 ANSPIRE_API_KEY=ansire_key, 138 ANSPIRE_API_KEY=ansire_key,
133 MAX_REFLECTIONS=max_reflections, 139 MAX_REFLECTIONS=max_reflections,
134 SEARCH_CONTENT_MAX_LENGTH=max_content_length, 140 SEARCH_CONTENT_MAX_LENGTH=max_content_length,
135 OUTPUT_DIR="media_engine_streamlit_reports", 141 OUTPUT_DIR="media_engine_streamlit_reports",
136 ) 142 )
  143 + else:
  144 + st.error(f"未知的搜索工具类型: {settings.SEARCH_TOOL_TYPE}")
  145 + logger.error(f"未知的搜索工具类型: {settings.SEARCH_TOOL_TYPE}")
  146 + return
137 147
138 # 执行研究 148 # 执行研究
139 execute_research(query, config) 149 execute_research(query, config)
@@ -150,8 +160,10 @@ def execute_research(query: str, config: Settings): @@ -150,8 +160,10 @@ def execute_research(query: str, config: Settings):
150 status_text.text("正在初始化Agent...") 160 status_text.text("正在初始化Agent...")
151 if config.SEARCH_TOOL_TYPE == "BochaAPI": 161 if config.SEARCH_TOOL_TYPE == "BochaAPI":
152 agent = DeepSearchAgent(config) 162 agent = DeepSearchAgent(config)
153 - else: 163 + elif config.SEARCH_TOOL_TYPE == "AnspireAPI":
154 agent = AnspireSearchAgent(config) 164 agent = AnspireSearchAgent(config)
  165 + else:
  166 + raise ValueError(f"未知的搜索工具类型: {config.SEARCH_TOOL_TYPE}")
155 st.session_state.agent = agent 167 st.session_state.agent = agent
156 168
157 progress_bar.progress(10) 169 progress_bar.progress(10)