Skip to content

Commit a7a8fd0

Browse files
committed
agent custom fetch
1 parent 1c9a5a1 commit a7a8fd0

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;
@@ -456,6 +462,7 @@ export async function createAgent(
456462
services: [],
457463
managers: [],
458464
cacheManager: cache,
465+
fetch: logFetch,
459466
});
460467
}
461468

packages/core/src/generation.ts

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

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

124145
elizaLogger.info("Selected model:", model);
@@ -155,7 +176,11 @@ export async function generateText({
155176
case ModelProviderName.HYPERBOLIC:
156177
case ModelProviderName.TOGETHER: {
157178
elizaLogger.debug("Initializing OpenAI model.");
158-
const openai = createOpenAI({ apiKey, baseURL: endpoint });
179+
const openai = createOpenAI({
180+
apiKey,
181+
baseURL: endpoint,
182+
fetch: runtime.fetch,
183+
});
159184

160185
const { text: openaiResponse } = await aiGenerateText({
161186
model: openai.languageModel(model),
@@ -176,7 +201,9 @@ export async function generateText({
176201
}
177202

178203
case ModelProviderName.GOOGLE: {
179-
const google = createGoogleGenerativeAI();
204+
const google = createGoogleGenerativeAI({
205+
fetch: runtime.fetch,
206+
});
180207

181208
const { text: googleResponse } = await aiGenerateText({
182209
model: google(model),
@@ -199,7 +226,10 @@ export async function generateText({
199226
case ModelProviderName.ANTHROPIC: {
200227
elizaLogger.debug("Initializing Anthropic model.");
201228

202-
const anthropic = createAnthropic({ apiKey });
229+
const anthropic = createAnthropic({
230+
apiKey,
231+
fetch: runtime.fetch,
232+
});
203233

204234
const { text: anthropicResponse } = await aiGenerateText({
205235
model: anthropic.languageModel(model),
@@ -222,7 +252,10 @@ export async function generateText({
222252
case ModelProviderName.CLAUDE_VERTEX: {
223253
elizaLogger.debug("Initializing Claude Vertex model.");
224254

225-
const anthropic = createAnthropic({ apiKey });
255+
const anthropic = createAnthropic({
256+
apiKey,
257+
fetch: runtime.fetch,
258+
});
226259

227260
const { text: anthropicResponse } = await aiGenerateText({
228261
model: anthropic.languageModel(model),
@@ -246,7 +279,11 @@ export async function generateText({
246279

247280
case ModelProviderName.GROK: {
248281
elizaLogger.debug("Initializing Grok model.");
249-
const grok = createOpenAI({ apiKey, baseURL: endpoint });
282+
const grok = createOpenAI({
283+
apiKey,
284+
baseURL: endpoint,
285+
fetch: runtime.fetch,
286+
});
250287

251288
const { text: grokResponse } = await aiGenerateText({
252289
model: grok.languageModel(model, {
@@ -269,7 +306,7 @@ export async function generateText({
269306
}
270307

271308
case ModelProviderName.GROQ: {
272-
const groq = createGroq({ apiKey });
309+
const groq = createGroq({ apiKey, fetch: runtime.fetch });
273310

274311
const { text: groqResponse } = await aiGenerateText({
275312
model: groq.languageModel(model),
@@ -316,7 +353,11 @@ export async function generateText({
316353
case ModelProviderName.REDPILL: {
317354
elizaLogger.debug("Initializing RedPill model.");
318355
const serverUrl = models[provider].endpoint;
319-
const openai = createOpenAI({ apiKey, baseURL: serverUrl });
356+
const openai = createOpenAI({
357+
apiKey,
358+
baseURL: serverUrl,
359+
fetch: runtime.fetch,
360+
});
320361

321362
const { text: redpillResponse } = await aiGenerateText({
322363
model: openai.languageModel(model),
@@ -339,7 +380,11 @@ export async function generateText({
339380
case ModelProviderName.OPENROUTER: {
340381
elizaLogger.debug("Initializing OpenRouter model.");
341382
const serverUrl = models[provider].endpoint;
342-
const openrouter = createOpenAI({ apiKey, baseURL: serverUrl });
383+
const openrouter = createOpenAI({
384+
apiKey,
385+
baseURL: serverUrl,
386+
fetch: runtime.fetch,
387+
});
343388

344389
const { text: openrouterResponse } = await aiGenerateText({
345390
model: openrouter.languageModel(model),
@@ -365,6 +410,7 @@ export async function generateText({
365410

366411
const ollamaProvider = createOllama({
367412
baseURL: models[provider].endpoint + "/api",
413+
fetch: runtime.fetch,
368414
});
369415
const ollama = ollamaProvider(model);
370416

@@ -389,6 +435,7 @@ export async function generateText({
389435
const heurist = createOpenAI({
390436
apiKey: apiKey,
391437
baseURL: endpoint,
438+
fetch: runtime.fetch,
392439
});
393440

394441
const { text: heuristResponse } = await aiGenerateText({
@@ -434,7 +481,11 @@ export async function generateText({
434481

435482
elizaLogger.debug("Using GAIANET model with baseURL:", baseURL);
436483

437-
const openai = createOpenAI({ apiKey, baseURL: endpoint });
484+
const openai = createOpenAI({
485+
apiKey,
486+
baseURL: endpoint,
487+
fetch: runtime.fetch,
488+
});
438489

439490
const { text: openaiResponse } = await aiGenerateText({
440491
model: openai.languageModel(model),
@@ -459,6 +510,7 @@ export async function generateText({
459510
const galadriel = createOpenAI({
460511
apiKey: apiKey,
461512
baseURL: endpoint,
513+
fetch: runtime.fetch,
462514
});
463515

464516
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)