Skip to content

Commit 3e8f2ce

Browse files
feat(web): add enable_web_search frontend UI (bytedance#681) (bytedance#766)
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
1 parent b85130b commit 3e8f2ce

File tree

6 files changed

+44
-2
lines changed

6 files changed

+44
-2
lines changed

web/messages/en.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@
4444
"maxStepsOfPlan": "Max steps of a research plan",
4545
"maxStepsDescription": "By default, each research plan has 3 steps.",
4646
"maxSearchResults": "Max search results",
47-
"maxSearchResultsDescription": "By default, each search step has 3 results."
47+
"maxSearchResultsDescription": "By default, each search step has 3 results.",
48+
"enableWebSearch": "Enable web search",
49+
"enableWebSearchDescription": "When disabled, only local RAG knowledge base will be used. Useful for environments without internet access."
4850
},
4951
"mcp": {
5052
"title": "MCP Servers",

web/messages/zh.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@
4444
"maxStepsOfPlan": "研究计划的最大步骤数",
4545
"maxStepsDescription": "默认情况下,每个研究计划有 3 个步骤。",
4646
"maxSearchResults": "最大搜索结果数",
47-
"maxSearchResultsDescription": "默认情况下,每个搜索步骤有 3 个结果。"
47+
"maxSearchResultsDescription": "默认情况下,每个搜索步骤有 3 个结果。",
48+
"enableWebSearch": "启用网络搜索",
49+
"enableWebSearchDescription": "禁用后将仅使用本地 RAG 知识库。适用于无网络环境。"
4850
},
4951
"mcp": {
5052
"title": "MCP 服务器",

web/src/app/settings/tabs/general-tab.tsx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ const generalFormSchema = z.object({
4242
// Others
4343
enableBackgroundInvestigation: z.boolean(),
4444
enableDeepThinking: z.boolean(),
45+
enableWebSearch: z.boolean(),
4546
reportStyle: z.enum(["academic", "popular_science", "news", "social_media","strategic_investment"]),
4647
});
4748

@@ -126,6 +127,29 @@ export const GeneralTab: Tab = ({
126127
</FormItem>
127128
)}
128129
/>
130+
<FormField
131+
control={form.control}
132+
name="enableWebSearch"
133+
render={({ field }) => (
134+
<FormItem>
135+
<FormControl>
136+
<div className="flex items-center gap-2">
137+
<Switch
138+
id="enableWebSearch"
139+
checked={field.value}
140+
onCheckedChange={field.onChange}
141+
/>
142+
<Label className="text-sm" htmlFor="enableWebSearch">
143+
{t("enableWebSearch")}
144+
</Label>
145+
</div>
146+
</FormControl>
147+
<FormDescription>
148+
{t("enableWebSearchDescription")}
149+
</FormDescription>
150+
</FormItem>
151+
)}
152+
/>
129153
{form.watch("enableClarification") && (
130154
<FormField
131155
control={form.control}

web/src/core/api/chat.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export async function* chatStream(
5151
interrupt_feedback?: string;
5252
enable_deep_thinking?: boolean;
5353
enable_background_investigation: boolean;
54+
enable_web_search?: boolean;
5455
report_style?: "academic" | "popular_science" | "news" | "social_media" | "strategic_investment";
5556
mcp_settings?: {
5657
servers: Record<

web/src/core/store/settings-store.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const DEFAULT_SETTINGS: SettingsState = {
1414
maxClarificationRounds: 3,
1515
enableDeepThinking: false,
1616
enableBackgroundInvestigation: false,
17+
enableWebSearch: true,
1718
maxPlanIterations: 1,
1819
maxStepNum: 3,
1920
maxSearchResults: 3,
@@ -31,6 +32,7 @@ export type SettingsState = {
3132
maxClarificationRounds: number;
3233
enableDeepThinking: boolean;
3334
enableBackgroundInvestigation: boolean;
35+
enableWebSearch: boolean;
3436
maxPlanIterations: number;
3537
maxStepNum: number;
3638
maxSearchResults: number;
@@ -174,4 +176,14 @@ export function setEnableClarification(value: boolean) {
174176
}));
175177
saveSettings();
176178
}
179+
180+
export function setEnableWebSearch(value: boolean) {
181+
useSettingsStore.setState((state) => ({
182+
general: {
183+
...state.general,
184+
enableWebSearch: value,
185+
},
186+
}));
187+
saveSettings();
188+
}
177189
loadSettings();

web/src/core/store/store.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ export async function sendMessage(
115115
enable_deep_thinking: settings.enableDeepThinking ?? false,
116116
enable_background_investigation:
117117
settings.enableBackgroundInvestigation ?? true,
118+
enable_web_search: settings.enableWebSearch ?? true,
118119
max_plan_iterations: settings.maxPlanIterations,
119120
max_step_num: settings.maxStepNum,
120121
max_search_results: settings.maxSearchResults,

0 commit comments

Comments
 (0)