Skip to content

Commit 1a6485d

Browse files
committed
refactor agent runtime
1 parent 829ebc7 commit 1a6485d

File tree

4 files changed

+66
-56
lines changed

4 files changed

+66
-56
lines changed

src/const/settings/agent.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { DEFAULT_AGENT_META } from '@/const/meta';
2-
import { DEFAULT_MODEL } from '@/const/settings/llm';
3-
import { ModelProvider } from '@/libs/agent-runtime';
2+
import { DEFAULT_MODEL, DEFAULT_PROVIDER } from '@/const/settings/llm';
43
import { LobeAgentChatConfig, LobeAgentConfig, LobeAgentTTSConfig } from '@/types/agent';
54
import { UserDefaultAgent } from '@/types/user/settings';
65

@@ -15,7 +14,7 @@ export const DEFAUTT_AGENT_TTS_CONFIG: LobeAgentTTSConfig = {
1514

1615
export const DEFAULT_AGENT_SEARCH_FC_MODEL = {
1716
model: DEFAULT_MODEL,
18-
provider: ModelProvider.OpenAI,
17+
provider: DEFAULT_PROVIDER,
1918
};
2019

2120
export const DEFAULT_AGENT_CHAT_CONFIG: LobeAgentChatConfig = {
@@ -41,7 +40,7 @@ export const DEFAULT_AGENT_CONFIG: LobeAgentConfig = {
4140
top_p: 1,
4241
},
4342
plugins: [],
44-
provider: ModelProvider.OpenAI,
43+
provider: DEFAULT_PROVIDER,
4544
systemRole: '',
4645
tts: DEFAUTT_AGENT_TTS_CONFIG,
4746
};

src/libs/agent-runtime/anthropic/index.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ export class LobeAnthropicAI implements LobeRuntimeAI {
3838
apiKey?: string;
3939
private id: string;
4040

41+
private isDebug() {
42+
return process.env.DEBUG_ANTHROPIC_CHAT_COMPLETION === '1';
43+
}
44+
4145
constructor({ apiKey, baseURL = DEFAULT_BASE_URL, id, ...res }: AnthropicAIParams = {}) {
4246
if (!apiKey) throw AgentRuntimeError.createError(AgentRuntimeErrorType.InvalidProviderAPIKey);
4347

@@ -51,6 +55,11 @@ export class LobeAnthropicAI implements LobeRuntimeAI {
5155
try {
5256
const anthropicPayload = await this.buildAnthropicPayload(payload);
5357

58+
if (this.isDebug()) {
59+
console.log('[requestPayload]');
60+
console.log(JSON.stringify(anthropicPayload), '\n');
61+
}
62+
5463
const response = await this.client.messages.create(
5564
{ ...anthropicPayload, stream: true },
5665
{
@@ -60,7 +69,7 @@ export class LobeAnthropicAI implements LobeRuntimeAI {
6069

6170
const [prod, debug] = response.tee();
6271

63-
if (process.env.DEBUG_ANTHROPIC_CHAT_COMPLETION === '1') {
72+
if (this.isDebug()) {
6473
debugStream(debug.toReadableStream()).catch(console.error);
6574
}
6675

src/libs/agent-runtime/google/index.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import {
2323
OpenAIChatMessage,
2424
UserMessageContentPart,
2525
} from '../types';
26-
import { ModelProvider } from '../types/type';
2726
import { AgentRuntimeError } from '../utils/createError';
2827
import { debugStream } from '../utils/debugStream';
2928
import { StreamingResponse } from '../utils/response';
@@ -77,6 +76,7 @@ interface LobeGoogleAIParams {
7776
apiKey?: string;
7877
baseURL?: string;
7978
client?: GoogleGenerativeAI | VertexAI;
79+
id?: string;
8080
isVertexAi?: boolean;
8181
}
8282

@@ -85,15 +85,18 @@ export class LobeGoogleAI implements LobeRuntimeAI {
8585
private isVertexAi: boolean;
8686
baseURL?: string;
8787
apiKey?: string;
88+
provider: string;
8889

89-
constructor({ apiKey, baseURL, client, isVertexAi }: LobeGoogleAIParams = {}) {
90+
constructor({ apiKey, baseURL, client, isVertexAi, id }: LobeGoogleAIParams = {}) {
9091
if (!apiKey) throw AgentRuntimeError.createError(AgentRuntimeErrorType.InvalidProviderAPIKey);
9192

9293
this.client = new GoogleGenerativeAI(apiKey);
9394
this.apiKey = apiKey;
9495
this.client = client ? (client as GoogleGenerativeAI) : new GoogleGenerativeAI(apiKey);
9596
this.baseURL = client ? undefined : baseURL || DEFAULT_BASE_URL;
9697
this.isVertexAi = isVertexAi || false;
98+
99+
this.provider = id || (isVertexAi ? 'vertexai' : 'google');
97100
}
98101

99102
async chat(rawPayload: ChatStreamPayload, options?: ChatCompetitionOptions) {
@@ -168,7 +171,7 @@ export class LobeGoogleAI implements LobeRuntimeAI {
168171
console.log(err);
169172
const { errorType, error } = this.parseErrorMessage(err.message);
170173

171-
throw AgentRuntimeError.chat({ error, errorType, provider: ModelProvider.Google });
174+
throw AgentRuntimeError.chat({ error, errorType, provider: this.provider });
172175
}
173176
}
174177

src/libs/agent-runtime/runtimeMap.ts

+47-48
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ import { LobeStepfunAI } from './stepfun';
3737
import { LobeTaichuAI } from './taichu';
3838
import { LobeTencentCloudAI } from './tencentcloud';
3939
import { LobeTogetherAI } from './togetherai';
40-
import { ModelProvider } from './types';
4140
import { LobeUpstageAI } from './upstage';
4241
import { LobeVLLMAI } from './vllm';
4342
import { LobeVolcengineAI } from './volcengine';
@@ -47,51 +46,51 @@ import { LobeZeroOneAI } from './zeroone';
4746
import { LobeZhipuAI } from './zhipu';
4847

4948
export const providerRuntimeMap = {
50-
[ModelProvider.OpenAI]: LobeOpenAI,
51-
[ModelProvider.Azure]: LobeAzureOpenAI,
52-
[ModelProvider.AzureAI]: LobeAzureAI,
53-
[ModelProvider.ZhiPu]: LobeZhipuAI,
54-
[ModelProvider.Google]: LobeGoogleAI,
55-
[ModelProvider.Moonshot]: LobeMoonshotAI,
56-
[ModelProvider.Bedrock]: LobeBedrockAI,
57-
[ModelProvider.LMStudio]: LobeLMStudioAI,
58-
[ModelProvider.Ollama]: LobeOllamaAI,
59-
[ModelProvider.VLLM]: LobeVLLMAI,
60-
[ModelProvider.Perplexity]: LobePerplexityAI,
61-
[ModelProvider.Anthropic]: LobeAnthropicAI,
62-
[ModelProvider.DeepSeek]: LobeDeepSeekAI,
63-
[ModelProvider.HuggingFace]: LobeHuggingFaceAI,
64-
[ModelProvider.Minimax]: LobeMinimaxAI,
65-
[ModelProvider.Mistral]: LobeMistralAI,
66-
[ModelProvider.Groq]: LobeGroq,
67-
[ModelProvider.Github]: LobeGithubAI,
68-
[ModelProvider.OpenRouter]: LobeOpenRouterAI,
69-
[ModelProvider.TogetherAI]: LobeTogetherAI,
70-
[ModelProvider.FireworksAI]: LobeFireworksAI,
71-
[ModelProvider.ZeroOne]: LobeZeroOneAI,
72-
[ModelProvider.Stepfun]: LobeStepfunAI,
73-
[ModelProvider.Qwen]: LobeQwenAI,
74-
[ModelProvider.Novita]: LobeNovitaAI,
75-
[ModelProvider.Nvidia]: LobeNvidiaAI,
76-
[ModelProvider.Taichu]: LobeTaichuAI,
77-
[ModelProvider.Baichuan]: LobeBaichuanAI,
78-
[ModelProvider.Ai360]: LobeAi360AI,
79-
[ModelProvider.SiliconCloud]: LobeSiliconCloudAI,
80-
[ModelProvider.GiteeAI]: LobeGiteeAI,
81-
[ModelProvider.Upstage]: LobeUpstageAI,
82-
[ModelProvider.Spark]: LobeSparkAI,
83-
[ModelProvider.Ai21]: LobeAi21AI,
84-
[ModelProvider.Hunyuan]: LobeHunyuanAI,
85-
[ModelProvider.SenseNova]: LobeSenseNovaAI,
86-
[ModelProvider.XAI]: LobeXAI,
87-
[ModelProvider.Jina]: LobeJinaAI,
88-
[ModelProvider.SambaNova]: LobeSambaNovaAI,
89-
[ModelProvider.Cloudflare]: LobeCloudflareAI,
90-
[ModelProvider.InternLM]: LobeInternLMAI,
91-
[ModelProvider.Higress]: LobeHigressAI,
92-
[ModelProvider.TencentCloud]: LobeTencentCloudAI,
93-
[ModelProvider.Volcengine]: LobeVolcengineAI,
94-
[ModelProvider.PPIO]: LobePPIOAI,
95-
[ModelProvider.Doubao]: LobeVolcengineAI,
96-
[ModelProvider.Wenxin]: LobeWenxinAI,
49+
ai21: LobeAi21AI,
50+
ai360: LobeAi360AI,
51+
anthropic: LobeAnthropicAI,
52+
azure: LobeAzureOpenAI,
53+
azureai: LobeAzureAI,
54+
baichuan: LobeBaichuanAI,
55+
bedrock: LobeBedrockAI,
56+
cloudflare: LobeCloudflareAI,
57+
deepseek: LobeDeepSeekAI,
58+
doubao: LobeVolcengineAI,
59+
fireworksai: LobeFireworksAI,
60+
giteeai: LobeGiteeAI,
61+
github: LobeGithubAI,
62+
google: LobeGoogleAI,
63+
groq: LobeGroq,
64+
higress: LobeHigressAI,
65+
huggingface: LobeHuggingFaceAI,
66+
hunyuan: LobeHunyuanAI,
67+
internlm: LobeInternLMAI,
68+
jina: LobeJinaAI,
69+
lmstudio: LobeLMStudioAI,
70+
minimax: LobeMinimaxAI,
71+
mistral: LobeMistralAI,
72+
moonshot: LobeMoonshotAI,
73+
novita: LobeNovitaAI,
74+
nvidia: LobeNvidiaAI,
75+
ollama: LobeOllamaAI,
76+
openai: LobeOpenAI,
77+
openrouter: LobeOpenRouterAI,
78+
perplexity: LobePerplexityAI,
79+
ppio: LobePPIOAI,
80+
qwen: LobeQwenAI,
81+
sambanova: LobeSambaNovaAI,
82+
sensenova: LobeSenseNovaAI,
83+
siliconcloud: LobeSiliconCloudAI,
84+
spark: LobeSparkAI,
85+
stepfun: LobeStepfunAI,
86+
taichu: LobeTaichuAI,
87+
tencentcloud: LobeTencentCloudAI,
88+
togetherai: LobeTogetherAI,
89+
upstage: LobeUpstageAI,
90+
vllm: LobeVLLMAI,
91+
volcengine: LobeVolcengineAI,
92+
wenxin: LobeWenxinAI,
93+
xai: LobeXAI,
94+
zeroone: LobeZeroOneAI,
95+
zhipu: LobeZhipuAI,
9796
};

0 commit comments

Comments
 (0)