fix(goose): only send agent-session-id when a session exists (#6657)
Signed-off-by: Adrian Cole <adrian@tetrate.io>
This commit is contained in:
@@ -73,8 +73,12 @@ impl LiteLLMProvider {
|
||||
})
|
||||
}
|
||||
|
||||
async fn fetch_models(&self, session: &str) -> Result<Vec<ModelInfo>, ProviderError> {
|
||||
let response = self.api_client.response_get(session, "model/info").await?;
|
||||
async fn fetch_models(&self) -> Result<Vec<ModelInfo>, ProviderError> {
|
||||
let response = self
|
||||
.api_client
|
||||
.request(None, "model/info")
|
||||
.response_get()
|
||||
.await?;
|
||||
|
||||
if !response.status().is_success() {
|
||||
return Err(ProviderError::RequestFailed(format!(
|
||||
@@ -112,7 +116,11 @@ impl LiteLLMProvider {
|
||||
Ok(models)
|
||||
}
|
||||
|
||||
async fn post(&self, session_id: &str, payload: &Value) -> Result<Value, ProviderError> {
|
||||
async fn post(
|
||||
&self,
|
||||
session_id: Option<&str>,
|
||||
payload: &Value,
|
||||
) -> Result<Value, ProviderError> {
|
||||
let response = self
|
||||
.api_client
|
||||
.response_post(session_id, &self.base_path, payload)
|
||||
@@ -168,7 +176,7 @@ impl Provider for LiteLLMProvider {
|
||||
#[tracing::instrument(skip_all, name = "provider_complete")]
|
||||
async fn complete_with_model(
|
||||
&self,
|
||||
session_id: &str,
|
||||
session_id: Option<&str>,
|
||||
model_config: &ModelConfig,
|
||||
system: &str,
|
||||
messages: &[Message],
|
||||
@@ -183,7 +191,7 @@ impl Provider for LiteLLMProvider {
|
||||
false,
|
||||
)?;
|
||||
|
||||
if self.supports_cache_control(session_id).await {
|
||||
if self.supports_cache_control().await {
|
||||
payload = update_request_for_cache_control(&payload);
|
||||
}
|
||||
|
||||
@@ -206,8 +214,8 @@ impl Provider for LiteLLMProvider {
|
||||
true
|
||||
}
|
||||
|
||||
async fn supports_cache_control(&self, session_id: &str) -> bool {
|
||||
if let Ok(models) = self.fetch_models(session_id).await {
|
||||
async fn supports_cache_control(&self) -> bool {
|
||||
if let Ok(models) = self.fetch_models().await {
|
||||
if let Some(model_info) = models.iter().find(|m| m.name == self.model.model_name) {
|
||||
return model_info.supports_cache_control.unwrap_or(false);
|
||||
}
|
||||
@@ -216,11 +224,8 @@ impl Provider for LiteLLMProvider {
|
||||
self.model.model_name.to_lowercase().contains("claude")
|
||||
}
|
||||
|
||||
async fn fetch_supported_models(
|
||||
&self,
|
||||
session_id: &str,
|
||||
) -> Result<Option<Vec<String>>, ProviderError> {
|
||||
match self.fetch_models(session_id).await {
|
||||
async fn fetch_supported_models(&self) -> Result<Option<Vec<String>>, ProviderError> {
|
||||
match self.fetch_models().await {
|
||||
Ok(models) => {
|
||||
let model_names: Vec<String> = models.into_iter().map(|m| m.name).collect();
|
||||
Ok(Some(model_names))
|
||||
@@ -251,7 +256,7 @@ impl EmbeddingCapable for LiteLLMProvider {
|
||||
|
||||
let response = self
|
||||
.api_client
|
||||
.response_post(session_id, "v1/embeddings", &payload)
|
||||
.response_post(Some(session_id), "v1/embeddings", &payload)
|
||||
.await?;
|
||||
let response_text = response.text().await?;
|
||||
let response_json: Value = serde_json::from_str(&response_text)?;
|
||||
|
||||
Reference in New Issue
Block a user