@agentforce/adk
Version:
AgentForce Agent Development Kit - A powerful framework for building AI agents and servers
75 lines (66 loc) • 2.81 kB
text/typescript
import type { AgentForceAgent } from "../../agent";
import { OllamaProvider } from "../../provider/ollama";
import { OpenRouterProvider } from "../../provider/openrouter";
import { GoogleProvider } from "../../provider/google";
import type { ProviderType, ModelConfig } from "../../types";
/**
* Connects the AI agent to a Language Learning Model.
* Sets the provider and model for the agent using separate parameters.
*
* @memberof AgentForceAgent
* @function useLLM
* @param {ProviderType} provider - The AI provider name (see {@link ProviderType} for available options)
* @param {string} model - The model name (e.g., "phi4-mini:latest", "gpt-3.5-turbo", "claude-3", "moonshotai/kimi-k2:free")
* @param {ModelConfig} [modelConfig] - Optional model configuration (see {@link ModelConfig} for available options)
* @returns {AgentForceAgent} Returns the {@link AgentForceAgent} instance for method chaining
*
* @example
* ```typescript
* const agent = new AgentForceAgent(config);
*
* // Set provider and model separately
* agent.useLLM("ollama", "phi4-mini:latest");
*
* // With model configuration
* agent.useLLM("ollama", "phi4-mini:latest", { temperature: 0.8, maxTokens: 8192 });
*
* // Different providers
* agent.useLLM("openai", "gpt-3.5-turbo");
* agent.useLLM("anthropic", "claude-3");
* agent.useLLM("openrouter", "moonshotai/kimi-k2:free");
*
* // Method chaining
* agent.useLLM("google", "gemini-1.5-flash").useLLM("ollama", "llama2");
* ```
*/
export function useLLM(this: AgentForceAgent, provider: ProviderType = "ollama", model = "gemma3:4b", modelConfig?: ModelConfig): AgentForceAgent {
const logger = this.getLogger();
// Update agent settings with provided parameters
this.setProvider(provider);
this.setModel(model);
this.setModelConfig(modelConfig); // persist model configuration on agent
// Initialize the appropriate provider
switch ((provider || "ollama").toLowerCase()) {
case "ollama":
// Initialize Ollama provider
new OllamaProvider(model, modelConfig);
break;
case "openrouter":
// Initialize OpenRouter provider
new OpenRouterProvider(model, modelConfig);
break;
case "google":
new GoogleProvider(model, modelConfig);
break;
case "openai":
logger.debug(`⚠️ OpenAI provider not implemented yet. Model: ${model}`);
break;
case "anthropic":
logger.debug(`⚠️ Anthropic provider not implemented yet. Model: ${model}`);
break;
default:
logger.debug(`⚠️ Unknown provider: ${provider}. Model: ${model}`);
break;
}
return this;
}