核心 API
完整的 Gemini CLI 核心 API 参考和使用指南
API 参考30 分钟阅读
API 模块
核心 API 模块和方法
GeminiClient
核心 Gemini API 客户端类
src/core/gemini.tsconstructor
constructor(config: GeminiConfig)创建 Gemini 客户端实例
参数:
configGeminiConfig客户端配置对象
示例:
const client = new GeminiClient({
apiKey: process.env.GEMINI_API_KEY,
model: 'gemini-pro',
temperature: 0.7
})chat
async chat(message: string, context?: Context): Promise<ChatResponse>发送聊天消息并获取响应
参数:
messagestring用户输入消息
contextContext可选的上下文信息
返回:
Promise<ChatResponse>聊天响应对象
示例:
const response = await client.chat('Hello, Gemini!', {
files: ['src/index.ts'],
history: previousMessages
})stream
async stream(message: string, context?: Context): AsyncGenerator<string>流式聊天响应
参数:
messagestring用户输入消息
contextContext可选的上下文信息
返回:
AsyncGenerator<string>流式响应生成器
示例:
for await (const chunk of client.stream('Explain this code')) {
process.stdout.write(chunk)
}SessionManager
会话状态管理器
src/core/session.tscreateSession
createSession(id?: string): Session创建新会话
参数:
idstring可选的会话 ID
返回:
Session新创建的会话对象
示例:
const session = sessionManager.createSession('my-session')getSession
getSession(id: string): Session | null获取指定会话
参数:
idstring会话 ID
返回:
Session | null会话对象或 null
示例:
const session = sessionManager.getSession('my-session')saveSession
async saveSession(session: Session): Promise<void>将会话保存到持久存储
参数:
sessionSession要保存的会话对象
示例:
await sessionManager.saveSession(session)
ContextManager
上下文处理管理器
src/core/context.tsaddFile
async addFile(filePath: string): Promise<void>将文件添加到上下文
参数:
filePathstring文件路径
示例:
await contextManager.addFile('src/utils/helper.ts')addDirectory
async addDirectory(dirPath: string, options?: DirOptions): Promise<void>将目录添加到上下文
参数:
dirPathstring目录路径
optionsDirOptions目录扫描选项
示例:
await contextManager.addDirectory('src/', {
exclude: ['*.test.ts'],
maxDepth: 3
})getContext
getContext(): Context获取当前上下文
返回:
Context当前上下文对象
示例:
const context = contextManager.getContext()
类型定义
核心 API 的 TypeScript 类型定义
GeminiConfig
Gemini 客户端配置接口
apiKeystringGoogle AI API 密钥
modelstring要使用的模型名称,默认为 "gemini-pro"
temperaturenumber生成温度,介于 0-1 之间
maxTokensnumber最大令牌数
timeoutnumber请求超时时间(毫秒)
ChatResponse
聊天响应接口
contentstring响应内容
usageTokenUsage令牌使用信息
modelstring使用的模型
finishReasonstring完成原因
Context
上下文信息接口
filesFileContext[]文件上下文列表
historyMessage[]消息历史
metadataRecord<string, any>元数据
Session
会话接口
idstring唯一会话标识符
messagesMessage[]消息历史
contextContext会话上下文
createdAtDate创建时间
updatedAtDate更新时间
使用示例
常见的 API 使用场景和代码示例
基本聊天
简单聊天交互示例
import { GeminiClient } from '@gemini/core'
const client = new GeminiClient({
apiKey: process.env.GEMINI_API_KEY,
model: 'gemini-pro'
})
async function basicChat() {
try {
const response = await client.chat('Hello, how are you?')
console.log('AI:', response.content)
} catch (error) {
console.error('Chat error:', error.message)
}
}文件上下文
包含文件上下文的聊天
import { GeminiClient, ContextManager } from '@gemini/core'
const client = new GeminiClient({ apiKey: process.env.GEMINI_API_KEY })
const contextManager = new ContextManager()
async function chatWithFiles() {
// Add files to context
await contextManager.addFile('src/utils/helper.ts')
await contextManager.addDirectory('src/components/')
const context = contextManager.getContext()
const response = await client.chat(
'Explain the helper functions in this codebase',
context
)
console.log(response.content)
}会话管理
管理持久会话
import { SessionManager } from '@gemini/core'
const sessionManager = new SessionManager()
async function manageSessions() {
// Create new session
const session = sessionManager.createSession('project-review')
// Add messages to session
session.messages.push({
role: 'user',
content: 'Review this code for best practices'
})
// Save session
await sessionManager.saveSession(session)
// Restore session later
const restored = sessionManager.getSession('project-review')
console.log('Session messages:', restored?.messages.length)
}流式响应
实时流式输出
import { GeminiClient } from '@gemini/core'
const client = new GeminiClient({ apiKey: process.env.GEMINI_API_KEY })
async function streamingChat() {
console.log('AI: ')
for await (const chunk of client.stream('Write a short story')) {
process.stdout.write(chunk)
}
console.log('\n\nStream completed!')
}错误处理
API 错误类型和处理方法
AuthenticationError
无效或过期的 API 密钥
GEMINI_AUTH_ERROR解决方案:
检查 API 密钥是否正确设置,确保密钥有效且未过期
RateLimitError
请求频率超出限制
GEMINI_RATE_LIMIT解决方案:
实施指数退避重试机制,或升级到更高配额计划
ContextTooLargeError
上下文内容超出模型限制
GEMINI_CONTEXT_TOO_LARGE解决方案:
减少上下文文件数量或使用文件摘要功能
NetworkError
网络连接问题
GEMINI_NETWORK_ERROR解决方案:
检查网络连接,配置代理设置,或增加超时时间