Skip to content

Commit 4d5d680

Browse files
authored
Merge pull request #1010 from v1xingyue/patch-custom-fetch
feat: Add custom fetch logic for agent
2 parents 5f266f1 + 0128a1e commit 4d5d680

File tree

3 files changed

+104
-43
lines changed

3 files changed

+104
-43
lines changed

agent/src/index.ts

+7
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ export const wait = (minTime: number = 1000, maxTime: number = 3000) => {
6060
return new Promise((resolve) => setTimeout(resolve, waitTime));
6161
};
6262

63+
const logFetch = async (url: string, options: any) => {
64+
elizaLogger.info(`Fetching ${url}`);
65+
elizaLogger.info(options);
66+
return fetch(url, options);
67+
};
68+
6369
export function parseArguments(): {
6470
character?: string;
6571
characters?: string;
@@ -473,6 +479,7 @@ export async function createAgent(
473479
services: [],
474480
managers: [],
475481
cacheManager: cache,
482+
fetch: logFetch,
476483
});
477484
}
478485

packages/core/src/generation.ts

+95-43
Original file line numberDiff line numberDiff line change
@@ -80,47 +80,68 @@ export async function generateText({
8080

8181
// allow character.json settings => secrets to override models
8282
// FIXME: add MODEL_MEDIUM support
83-
switch(provider) {
83+
switch (provider) {
8484
// if runtime.getSetting("LLAMACLOUD_MODEL_LARGE") is true and modelProvider is LLAMACLOUD, then use the large model
85-
case ModelProviderName.LLAMACLOUD: {
86-
switch(modelClass) {
87-
case ModelClass.LARGE: {
88-
model = runtime.getSetting("LLAMACLOUD_MODEL_LARGE") || model;
89-
}
90-
break;
91-
case ModelClass.SMALL: {
92-
model = runtime.getSetting("LLAMACLOUD_MODEL_SMALL") || model;
85+
case ModelProviderName.LLAMACLOUD:
86+
{
87+
switch (modelClass) {
88+
case ModelClass.LARGE:
89+
{
90+
model =
91+
runtime.getSetting("LLAMACLOUD_MODEL_LARGE") ||
92+
model;
93+
}
94+
break;
95+
case ModelClass.SMALL:
96+
{
97+
model =
98+
runtime.getSetting("LLAMACLOUD_MODEL_SMALL") ||
99+
model;
100+
}
101+
break;
93102
}
94-
break;
95103
}
96-
}
97-
break;
98-
case ModelProviderName.TOGETHER: {
99-
switch(modelClass) {
100-
case ModelClass.LARGE: {
101-
model = runtime.getSetting("TOGETHER_MODEL_LARGE") || model;
102-
}
103-
break;
104-
case ModelClass.SMALL: {
105-
model = runtime.getSetting("TOGETHER_MODEL_SMALL") || model;
104+
break;
105+
case ModelProviderName.TOGETHER:
106+
{
107+
switch (modelClass) {
108+
case ModelClass.LARGE:
109+
{
110+
model =
111+
runtime.getSetting("TOGETHER_MODEL_LARGE") ||
112+
model;
113+
}
114+
break;
115+
case ModelClass.SMALL:
116+
{
117+
model =
118+
runtime.getSetting("TOGETHER_MODEL_SMALL") ||
119+
model;
120+
}
121+
break;
106122
}
107-
break;
108123
}
109-
}
110-
break;
111-
case ModelProviderName.OPENROUTER: {
112-
switch(modelClass) {
113-
case ModelClass.LARGE: {
114-
model = runtime.getSetting("LARGE_OPENROUTER_MODEL") || model;
115-
}
116-
break;
117-
case ModelClass.SMALL: {
118-
model = runtime.getSetting("SMALL_OPENROUTER_MODEL") || model;
124+
break;
125+
case ModelProviderName.OPENROUTER:
126+
{
127+
switch (modelClass) {
128+
case ModelClass.LARGE:
129+
{
130+
model =
131+
runtime.getSetting("LARGE_OPENROUTER_MODEL") ||
132+
model;
133+
}
134+
break;
135+
case ModelClass.SMALL:
136+
{
137+
model =
138+
runtime.getSetting("SMALL_OPENROUTER_MODEL") ||
139+
model;
140+
}
141+
break;
119142
}
120-
break;
121143
}
122-
}
123-
break;
144+
break;
124145
}
125146

126147
elizaLogger.info("Selected model:", model);
@@ -157,7 +178,11 @@ export async function generateText({
157178
case ModelProviderName.HYPERBOLIC:
158179
case ModelProviderName.TOGETHER: {
159180
elizaLogger.debug("Initializing OpenAI model.");
160-
const openai = createOpenAI({ apiKey, baseURL: endpoint });
181+
const openai = createOpenAI({
182+
apiKey,
183+
baseURL: endpoint,
184+
fetch: runtime.fetch,
185+
});
161186

162187
const { text: openaiResponse } = await aiGenerateText({
163188
model: openai.languageModel(model),
@@ -178,7 +203,9 @@ export async function generateText({
178203
}
179204

180205
case ModelProviderName.GOOGLE: {
181-
const google = createGoogleGenerativeAI();
206+
const google = createGoogleGenerativeAI({
207+
fetch: runtime.fetch,
208+
});
182209

183210
const { text: googleResponse } = await aiGenerateText({
184211
model: google(model),
@@ -201,7 +228,10 @@ export async function generateText({
201228
case ModelProviderName.ANTHROPIC: {
202229
elizaLogger.debug("Initializing Anthropic model.");
203230

204-
const anthropic = createAnthropic({ apiKey });
231+
const anthropic = createAnthropic({
232+
apiKey,
233+
fetch: runtime.fetch,
234+
});
205235

206236
const { text: anthropicResponse } = await aiGenerateText({
207237
model: anthropic.languageModel(model),
@@ -224,7 +254,10 @@ export async function generateText({
224254
case ModelProviderName.CLAUDE_VERTEX: {
225255
elizaLogger.debug("Initializing Claude Vertex model.");
226256

227-
const anthropic = createAnthropic({ apiKey });
257+
const anthropic = createAnthropic({
258+
apiKey,
259+
fetch: runtime.fetch,
260+
});
228261

229262
const { text: anthropicResponse } = await aiGenerateText({
230263
model: anthropic.languageModel(model),
@@ -248,7 +281,11 @@ export async function generateText({
248281

249282
case ModelProviderName.GROK: {
250283
elizaLogger.debug("Initializing Grok model.");
251-
const grok = createOpenAI({ apiKey, baseURL: endpoint });
284+
const grok = createOpenAI({
285+
apiKey,
286+
baseURL: endpoint,
287+
fetch: runtime.fetch,
288+
});
252289

253290
const { text: grokResponse } = await aiGenerateText({
254291
model: grok.languageModel(model, {
@@ -271,7 +308,7 @@ export async function generateText({
271308
}
272309

273310
case ModelProviderName.GROQ: {
274-
const groq = createGroq({ apiKey });
311+
const groq = createGroq({ apiKey, fetch: runtime.fetch });
275312

276313
const { text: groqResponse } = await aiGenerateText({
277314
model: groq.languageModel(model),
@@ -318,7 +355,11 @@ export async function generateText({
318355
case ModelProviderName.REDPILL: {
319356
elizaLogger.debug("Initializing RedPill model.");
320357
const serverUrl = models[provider].endpoint;
321-
const openai = createOpenAI({ apiKey, baseURL: serverUrl });
358+
const openai = createOpenAI({
359+
apiKey,
360+
baseURL: serverUrl,
361+
fetch: runtime.fetch,
362+
});
322363

323364
const { text: redpillResponse } = await aiGenerateText({
324365
model: openai.languageModel(model),
@@ -341,7 +382,11 @@ export async function generateText({
341382
case ModelProviderName.OPENROUTER: {
342383
elizaLogger.debug("Initializing OpenRouter model.");
343384
const serverUrl = models[provider].endpoint;
344-
const openrouter = createOpenAI({ apiKey, baseURL: serverUrl });
385+
const openrouter = createOpenAI({
386+
apiKey,
387+
baseURL: serverUrl,
388+
fetch: runtime.fetch,
389+
});
345390

346391
const { text: openrouterResponse } = await aiGenerateText({
347392
model: openrouter.languageModel(model),
@@ -367,6 +412,7 @@ export async function generateText({
367412

368413
const ollamaProvider = createOllama({
369414
baseURL: models[provider].endpoint + "/api",
415+
fetch: runtime.fetch,
370416
});
371417
const ollama = ollamaProvider(model);
372418

@@ -391,6 +437,7 @@ export async function generateText({
391437
const heurist = createOpenAI({
392438
apiKey: apiKey,
393439
baseURL: endpoint,
440+
fetch: runtime.fetch,
394441
});
395442

396443
const { text: heuristResponse } = await aiGenerateText({
@@ -436,7 +483,11 @@ export async function generateText({
436483

437484
elizaLogger.debug("Using GAIANET model with baseURL:", baseURL);
438485

439-
const openai = createOpenAI({ apiKey, baseURL: endpoint });
486+
const openai = createOpenAI({
487+
apiKey,
488+
baseURL: endpoint,
489+
fetch: runtime.fetch,
490+
});
440491

441492
const { text: openaiResponse } = await aiGenerateText({
442493
model: openai.languageModel(model),
@@ -461,6 +512,7 @@ export async function generateText({
461512
const galadriel = createOpenAI({
462513
apiKey: apiKey,
463514
baseURL: endpoint,
515+
fetch: runtime.fetch,
464516
});
465517

466518
const { text: galadrielResponse } = await aiGenerateText({

packages/core/src/types.ts

+2
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,8 @@ export interface IAgentRuntime {
992992
evaluators: Evaluator[];
993993
plugins: Plugin[];
994994

995+
fetch?: typeof fetch | null;
996+
995997
messageManager: IMemoryManager;
996998
descriptionManager: IMemoryManager;
997999
documentsManager: IMemoryManager;

0 commit comments

Comments
 (0)