MCPcopy Create free account
hub / github.com/ChrisFeldmeier/OpenCodeRust / chat

Method chat

crates/opencode-provider/src/openai.rs:992–1027  ·  view source on GitHub ↗
(&self, request: ChatRequest)

Source from the content-addressed store, hash-verified

990 }
991
992 async fn chat(&self, request: ChatRequest) -> Result<ChatResponse, ProviderError> {
993 // Skip Responses API for OpenAI-compatible providers (non-OpenAI endpoints)
994 if self.prefers_legacy_route() {
995 return self.chat_legacy(request).await;
996 }
997
998 let response_model = self.responses_model(&request.model);
999 let options = self.responses_generate_options(&request);
1000 let request_for_primary = request.clone();
1001 let model_for_log = request.model.clone();
1002 resolve_with_fallback(
1003 async move {
1004 response_model
1005 .do_generate(options)
1006 .await
1007 .map(|result| Self::responses_chat_response(&request_for_primary, result))
1008 },
1009 move |err| async move {
1010 if get_custom_fetch_proxy("openai").is_some() {
1011 tracing::warn!(
1012 model = %model_for_log,
1013 error = %err,
1014 "Responses generate failed while custom fetch proxy is active; skipping legacy fallback"
1015 );
1016 return Err(err);
1017 }
1018 tracing::warn!(
1019 model = %model_for_log,
1020 error = %err,
1021 "Responses generate failed, falling back to chat completions"
1022 );
1023 self.chat_legacy(request).await
1024 },
1025 )
1026 .await
1027 }
1028
1029 async fn chat_stream(&self, request: ChatRequest) -> Result<StreamResult, ProviderError> {
1030 // Skip Responses API for OpenAI-compatible providers (non-OpenAI endpoints)

Callers

nothing calls this directly

Calls 8

get_custom_fetch_proxyFunction · 0.85
prefers_legacy_routeMethod · 0.80
do_generateMethod · 0.80
resolve_with_fallbackFunction · 0.70
chat_legacyMethod · 0.45
responses_modelMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected