コアAPI
完全なGemini CLI Core APIリファレンスと使用ガイド
APIモジュール
コアAPIモジュールとメソッド
GeminiClient
コアGemini APIクライアントクラス
src/core/gemini.ts
constructor
constructor(config: GeminiConfig)
Geminiクライアントインスタンスを作成
パラメータ:
config
GeminiConfigクライアント設定オブジェクト
例:
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>
チャットメッセージを送信して応答を取得
パラメータ:
message
stringユーザー入力メッセージ
context
Contextオプションのコンテキスト情報
戻り値:
Promise<ChatResponse>
チャット応答オブジェクト
例:
const response = await client.chat('Hello, Gemini!', { files: ['src/index.ts'], history: previousMessages })
stream
async stream(message: string, context?: Context): AsyncGenerator<string>
ストリーミングチャット応答
パラメータ:
message
stringユーザー入力メッセージ
context
Contextオプションのコンテキスト情報
戻り値:
AsyncGenerator<string>
ストリーミング応答ジェネレータ
例:
for await (const chunk of client.stream('Explain this code')) { process.stdout.write(chunk) }
SessionManager
セッション状態マネージャー
src/core/session.ts
createSession
createSession(id?: string): Session
新しいセッションを作成
パラメータ:
id
stringオプションのセッションID
戻り値:
Session
新しく作成されたセッションオブジェクト
例:
const session = sessionManager.createSession('my-session')
getSession
getSession(id: string): Session | null
指定されたセッションを取得
パラメータ:
id
stringセッションID
戻り値:
Session | null
セッションオブジェクトまたはnull
例:
const session = sessionManager.getSession('my-session')
saveSession
async saveSession(session: Session): Promise<void>
セッションを永続ストレージに保存
パラメータ:
session
Session保存するセッションオブジェクト
例:
await sessionManager.saveSession(session)
ContextManager
コンテキスト処理マネージャー
src/core/context.ts
addFile
async addFile(filePath: string): Promise<void>
ファイルをコンテキストに追加
パラメータ:
filePath
stringファイルパス
例:
await contextManager.addFile('src/utils/helper.ts')
addDirectory
async addDirectory(dirPath: string, options?: DirOptions): Promise<void>
ディレクトリをコンテキストに追加
パラメータ:
dirPath
stringディレクトリパス
options
DirOptionsディレクトリスキャンオプション
例:
await contextManager.addDirectory('src/', { exclude: ['*.test.ts'], maxDepth: 3 })
getContext
getContext(): Context
現在のコンテキストを取得
戻り値:
Context
現在のコンテキストオブジェクト
例:
const context = contextManager.getContext()
型定義
Core APIのTypeScript型定義
GeminiConfig
Geminiクライアント設定インターフェース
apiKey
stringGoogle AI APIキー
model
string使用するモデル名、デフォルトは "gemini-pro"
temperature
number生成温度、0-1の間
maxTokens
number最大トークン数
timeout
numberリクエストタイムアウト(ミリ秒)
ChatResponse
チャット応答インターフェース
content
string応答内容
usage
TokenUsageトークン使用情報
model
string使用されたモデル
finishReason
string終了理由
Context
コンテキスト情報インターフェース
files
FileContext[]ファイルコンテキストリスト
history
Message[]メッセージ履歴
metadata
Record<string, any>メタデータ
Session
セッションインターフェース
id
string一意のセッション識別子
messages
Message[]メッセージ履歴
context
Contextセッションコンテキスト
createdAt
Date作成時間
updatedAt
Date更新時間
使用例
一般的な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
解決策:
ネットワーク接続を確認し、プロキシ設定を構成するか、タイムアウトを増やしてください