Merge sessions/carmack/ee92b215
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -523,12 +523,11 @@ fn try_parse_json_from_buffer(buffer: &mut String) -> Option<String> {
|
|||||||
// LLMProvider Implementation
|
// LLMProvider Implementation
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
#[async_trait]
|
impl GeminiProvider {
|
||||||
impl LLMProvider for GeminiProvider {
|
/// Build a GeminiRequest from a CompletionRequest.
|
||||||
async fn complete(&self, request: CompletionRequest) -> Result<CompletionResponse> {
|
fn build_request(&self, request: &CompletionRequest) -> GeminiRequest {
|
||||||
let (contents, system_instruction) = convert_messages(&request.messages);
|
let (contents, system_instruction) = convert_messages(&request.messages);
|
||||||
|
GeminiRequest {
|
||||||
let gemini_request = GeminiRequest {
|
|
||||||
contents,
|
contents,
|
||||||
system_instruction,
|
system_instruction,
|
||||||
tools: request.tools.as_ref().map(|t| convert_tools(t)),
|
tools: request.tools.as_ref().map(|t| convert_tools(t)),
|
||||||
@@ -536,7 +535,14 @@ impl LLMProvider for GeminiProvider {
|
|||||||
max_output_tokens: request.max_tokens.or(Some(self.max_tokens)),
|
max_output_tokens: request.max_tokens.or(Some(self.max_tokens)),
|
||||||
temperature: request.temperature.or(Some(self.temperature)),
|
temperature: request.temperature.or(Some(self.temperature)),
|
||||||
},
|
},
|
||||||
};
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[async_trait]
|
||||||
|
impl LLMProvider for GeminiProvider {
|
||||||
|
async fn complete(&self, request: CompletionRequest) -> Result<CompletionResponse> {
|
||||||
|
let gemini_request = self.build_request(&request);
|
||||||
|
|
||||||
let url = self.get_api_url(false);
|
let url = self.get_api_url(false);
|
||||||
debug!("Gemini request URL: {}", url);
|
debug!("Gemini request URL: {}", url);
|
||||||
@@ -579,17 +585,7 @@ impl LLMProvider for GeminiProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn stream(&self, request: CompletionRequest) -> Result<CompletionStream> {
|
async fn stream(&self, request: CompletionRequest) -> Result<CompletionStream> {
|
||||||
let (contents, system_instruction) = convert_messages(&request.messages);
|
let gemini_request = self.build_request(&request);
|
||||||
|
|
||||||
let gemini_request = GeminiRequest {
|
|
||||||
contents,
|
|
||||||
system_instruction,
|
|
||||||
tools: request.tools.as_ref().map(|t| convert_tools(t)),
|
|
||||||
generation_config: GeminiGenerationConfig {
|
|
||||||
max_output_tokens: request.max_tokens.or(Some(self.max_tokens)),
|
|
||||||
temperature: request.temperature.or(Some(self.temperature)),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
// For streaming, add alt=sse parameter
|
// For streaming, add alt=sse parameter
|
||||||
let url = format!("{}&alt=sse", self.get_api_url(true));
|
let url = format!("{}&alt=sse", self.get_api_url(true));
|
||||||
|
|||||||
Reference in New Issue
Block a user