Skip to content

Commit ce65f09

Browse files
committed
fix: 回归intern key,本地开发因为intern key过期的原因,换成deepseek,暂时测试用
1 parent b9508fd commit ce65f09

9 files changed

Lines changed: 42 additions & 58 deletions

File tree

app/api/chat/route.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ export async function POST(req: Request) {
3434

3535
// ====== 尝试优雅降级代理到 Java 后端 ======
3636
try {
37-
const backendUrl = process.env.BACKEND_URL ?? "http://localhost:8080";
37+
const backendUrl = process.env.BACKEND_URL;
38+
if (!backendUrl) throw new Error("BACKEND_URL is not configured.");
3839
const controller = new AbortController();
3940
const timeoutId = setTimeout(() => controller.abort(), 5000); // 5秒超时
4041

@@ -81,7 +82,7 @@ export async function POST(req: Request) {
8182
messages,
8283
system,
8384
pageContext,
84-
provider = "deepseek", // 默认使用deepseek模型
85+
provider = "intern", // 默认使用书生模型
8586
apiKey,
8687
chatId,
8788
}: ChatRequest = await req.json();

app/api/suggestions/route.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export async function POST(req: Request) {
2424
const {
2525
messages,
2626
pageContext,
27-
provider = "deepseek",
27+
provider = "intern",
2828
apiKey,
2929
}: SuggestionsRequest = await req.json();
3030

@@ -38,17 +38,17 @@ export async function POST(req: Request) {
3838

3939
// 模型选择策略:
4040
// - 若用户选了自己的 Provider(openai/gemini),用用户的模型
41-
// - 否则(默认 deepseek)优先用 GLM-4-Flash(免费且快速),若 ZHIPU_API_KEY 未配置则回退到 deepseek
41+
// - 否则(默认 intern)优先用 GLM-4-Flash(免费且快速),若 ZHIPU_API_KEY 未配置则回退到 intern
4242
let model;
43-
if (provider !== "deepseek") {
43+
if (provider !== "intern") {
4444
// 用户自选模型(openai / gemini)
4545
model = getModel(provider, apiKey);
4646
} else if (process.env.ZHIPU_API_KEY) {
4747
// 默认使用智谱 GLM-4-Flash(免费轻量)
4848
model = createGlmFlashModel();
4949
} else {
50-
// 兜底:仍使用 deepseek
51-
model = getModel("deepseek");
50+
// 兜底:仍使用 intern
51+
model = getModel("intern");
5252
}
5353

5454
const isWelcomeRequest = messages.length === 0;
@@ -92,12 +92,12 @@ export async function POST(req: Request) {
9292
async (cPrompt: string, cModelId: string) => {
9393
// 由于 model 不能序列化传入,在缓存函数内侧由于无法动态构建,所以此处传递标识再创建
9494
const m =
95-
cModelId === "deepseek"
96-
? getModel("deepseek")
95+
cModelId === "intern"
96+
? getModel("intern")
9797
: cModelId === "glm"
9898
? createGlmFlashModel()
9999
: // 无法传递用户动态 key,对于配置了 key 的情况不走此函数
100-
getModel("deepseek");
100+
getModel("intern");
101101

102102
const { text } = await generateText({
103103
model: m,
@@ -115,7 +115,7 @@ export async function POST(req: Request) {
115115

116116
let text = "";
117117
// 判断是否可以使用缓存(如果使用了自定义 apiKey,为了防止数据交叉,不采用公用缓存)
118-
if (provider !== "deepseek" && !process.env.ZHIPU_API_KEY) {
118+
if (provider !== "intern" && !process.env.ZHIPU_API_KEY) {
119119
const { text: directText } = await generateText({
120120
model,
121121
prompt,
@@ -124,11 +124,11 @@ export async function POST(req: Request) {
124124
} else {
125125
// 确定内部用于缓存匹配的模型标识
126126
const internalModelId =
127-
provider === "deepseek"
127+
provider === "intern"
128128
? process.env.ZHIPU_API_KEY
129129
? "glm"
130-
: "deepseek"
131-
: "deepseek";
130+
: "intern"
131+
: "intern";
132132
// 将缓存粒度关联到请求本身的内容上
133133
const suggestionKey = isWelcomeRequest
134134
? `welcome-${pageContext?.slug || "default"}`

app/components/DocsAssistant.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ interface AssistantErrorState {
365365
showSettingsCTA: boolean;
366366
}
367367

368-
type AssistantProvider = "openai" | "gemini" | "deepseek";
368+
type AssistantProvider = "openai" | "gemini" | "intern";
369369

370370
type AssistantErrorData = {
371371
error?: string;
@@ -392,8 +392,8 @@ function deriveAssistantError(
392392
const providerLabel =
393393
provider === "gemini"
394394
? "Google Gemini"
395-
: provider === "deepseek"
396-
? "Deepseek"
395+
: provider === "intern"
396+
? "Intern-AI"
397397
: "OpenAI";
398398
const fallback: AssistantErrorState = {
399399
message:
@@ -441,7 +441,7 @@ function deriveAssistantError(
441441
// For intern provider, don't show settings CTA for API key related errors
442442
// 对于书生,不要显示 API 密钥相关的错误
443443
if (
444-
provider !== "deepseek" &&
444+
provider !== "intern" &&
445445
(statusCode === 400 ||
446446
statusCode === 401 ||
447447
statusCode === 403 ||

app/components/assistant-ui/SettingsDialog.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@ export const SettingsDialog = ({
5353
<RadioGroup
5454
value={provider}
5555
onValueChange={(value) =>
56-
setProvider(value as "openai" | "gemini" | "deepseek")
56+
setProvider(value as "openai" | "gemini" | "intern")
5757
}
5858
>
5959
<div className="flex items-center space-x-2">
60-
<RadioGroupItem value="deepseek" id="deepseek" />
61-
<Label htmlFor="deepseek">Deepseek (Free)</Label>
60+
<RadioGroupItem value="intern" id="intern" />
61+
<Label htmlFor="intern">InternS1 (Free)</Label>
6262
</div>
6363
<div className="flex items-center space-x-2">
6464
<RadioGroupItem value="openai" id="openai" />
@@ -175,7 +175,7 @@ export const SettingsDialog = ({
175175
</div>
176176
)}
177177

178-
{provider === "deepseek" && (
178+
{provider === "intern" && (
179179
<div className="space-y-2">
180180
<div className="text-sm text-muted-foreground">
181181
感谢上海AILab的书生大模型对本项目的算力支持,Intern-AI

app/components/assistant-ui/thread.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -350,12 +350,12 @@ const Composer: FC<ComposerProps> = ({
350350
: provider === "gemini"
351351
? geminiApiKey
352352
: "";
353-
const hasActiveKey = provider === "deepseek" || activeKey.trim().length > 0;
353+
const hasActiveKey = provider === "intern" || activeKey.trim().length > 0;
354354
const providerLabel =
355355
provider === "gemini"
356356
? "Google Gemini"
357-
: provider === "deepseek"
358-
? "Deepseek"
357+
: provider === "intern"
358+
? "Intern-AI"
359359
: "OpenAI";
360360

361361
const handleOpenSettings = useCallback(() => {

app/hooks/useAssistantSettings.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
} from "react";
1111
import type { ReactNode } from "react";
1212

13-
type Provider = "openai" | "gemini" | "deepseek";
13+
type Provider = "openai" | "gemini" | "intern";
1414

1515
interface AssistantSettingsState {
1616
provider: Provider;
@@ -30,7 +30,7 @@ interface AssistantSettingsContextValue extends AssistantSettingsState {
3030
const SETTINGS_KEY = "assistant-settings-storage";
3131

3232
const defaultSettings: AssistantSettingsState = {
33-
provider: "deepseek",
33+
provider: "intern",
3434
openaiApiKey: "",
3535
geminiApiKey: "",
3636
saveToLocalStorage: false,
@@ -52,8 +52,8 @@ const parseStoredSettings = (raw: string | null): AssistantSettingsState => {
5252
let provider =
5353
parsed.provider === "gemini"
5454
? "gemini"
55-
: parsed.provider === "deepseek"
56-
? "deepseek"
55+
: parsed.provider === "intern"
56+
? "intern"
5757
: "openai";
5858

5959
const openaiApiKey =
@@ -67,10 +67,10 @@ const parseStoredSettings = (raw: string | null): AssistantSettingsState => {
6767

6868
// 如果用户之前默认在 openai/gemini 但现在没有对应的 API Key,则回退到免配置的 intern 模型
6969
if (provider === "openai" && !openaiApiKey) {
70-
provider = "deepseek";
70+
provider = "intern";
7171
}
7272
if (provider === "gemini" && !geminiApiKey) {
73-
provider = "deepseek";
73+
provider = "intern";
7474
}
7575

7676
return {

lib/ai/models.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import { createOpenAIModel } from "./providers/openai";
22
import { createGeminiModel } from "./providers/gemini";
33
import { createInternModel } from "./providers/intern";
4-
import { createDeepseekModel } from "./providers/deepseek";
54

6-
export type AIProvider = "openai" | "gemini" | "intern" | "deepseek";
5+
export type AIProvider = "openai" | "gemini" | "intern";
76

87
/**
98
* Model工厂 用于返回对应的 AI 模型实例
@@ -29,9 +28,6 @@ export function getModel(provider: AIProvider, apiKey?: string) {
2928
// Intern 书生模型不需要用户提供 API key
3029
return createInternModel();
3130

32-
case "deepseek":
33-
return createDeepseekModel();
34-
3531
default:
3632
throw new Error(`Unsupported AI provider: ${provider}`);
3733
}
@@ -43,5 +39,5 @@ export function getModel(provider: AIProvider, apiKey?: string) {
4339
* @returns 如果需要 API key,返回 true,否则返回 false
4440
*/
4541
export function requiresApiKey(provider: AIProvider): boolean {
46-
return provider !== "intern" && provider !== "deepseek";
42+
return provider !== "intern";
4743
}

lib/ai/providers/deepseek.ts

Lines changed: 0 additions & 18 deletions
This file was deleted.

lib/ai/providers/intern.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,20 @@ import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
33
/**
44
* Create Intern-AI model instance
55
* Uses environment variable INTERN_KEY for API key
6+
* 在开发环境下,临时映射到 Deepseek 进行测试
67
* @returns Configured Intern-AI model instance
78
*/
89
export function createInternModel() {
10+
const isDev = process.env.NODE_ENV === "development";
11+
912
const intern = createOpenAICompatible({
1013
name: "intern",
11-
baseURL: "https://chat.intern-ai.org.cn/api/v1/",
12-
apiKey: process.env.INTERN_KEY,
14+
baseURL: isDev
15+
? "https://api.deepseek.com" // 开发环境临时使用 Deepseek 接口测试
16+
: "https://chat.intern-ai.org.cn/api/v1/",
17+
apiKey: isDev ? process.env.DEEPSEEK_API_KEY : process.env.INTERN_KEY,
1318
});
1419

1520
// Use the specific model configured for this project
16-
return intern("intern-s1");
21+
return intern(isDev ? "deepseek-chat" : "intern-s1");
1722
}

0 commit comments

Comments
 (0)