gemini_adk_rs/code_executors/
built_in.rs1use async_trait::async_trait;
2
3use crate::llm::LlmRequest;
4use crate::utils::model_name::is_gemini2_or_above;
5
6use super::base::{CodeExecutor, CodeExecutorError};
7use super::types::{CodeExecutionInput, CodeExecutionResult};
8
9pub struct BuiltInCodeExecutor;
12
13impl BuiltInCodeExecutor {
14 pub fn process_llm_request(
17 &self,
18 request: &mut LlmRequest,
19 model: &str,
20 ) -> Result<(), CodeExecutorError> {
21 if !is_gemini2_or_above(model) {
22 return Err(CodeExecutorError::UnsupportedModel(format!(
23 "Built-in code execution requires Gemini 2.0+, got: {model}"
24 )));
25 }
26 request
27 .tools
28 .push(gemini_genai_rs::prelude::Tool::code_execution());
29 Ok(())
30 }
31}
32
33#[async_trait]
34impl CodeExecutor for BuiltInCodeExecutor {
35 async fn execute_code(
36 &self,
37 _input: CodeExecutionInput,
38 ) -> Result<CodeExecutionResult, CodeExecutorError> {
39 Ok(CodeExecutionResult::empty())
41 }
42}