コアAPI
完全なGemini CLI Core APIリファレンスと使用ガイド
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()
型定義
Core 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解決策:
ネットワーク接続を確認し、プロキシ設定を構成するか、タイムアウトを増やしてください