MCPcopy Create free account
hub / github.com/InfinitiBit/graphbit / complete

Method complete

core/src/llm/huggingface.rs:113–184  ·  view source on GitHub ↗
(&self, request: LlmRequest)

Source from the content-addressed store, hash-verified

111 }
112
113 async fn complete(&self, request: LlmRequest) -> GraphBitResult<LlmResponse> {
114 let url = format!("{}/{}", self.base_url, self.model);
115
116 // Format messages for `HuggingFace`
117 let inputs = Self::format_messages_for_chat(&request.messages);
118
119 let mut parameters = HashMap::new();
120 if let Some(max_tokens) = request.max_tokens {
121 parameters.insert(
122 "max_new_tokens".to_string(),
123 serde_json::Value::Number(max_tokens.into()),
124 );
125 }
126 if let Some(temperature) = request.temperature {
127 parameters.insert(
128 "temperature".to_string(),
129 serde_json::Value::Number(
130 serde_json::Number::from_f64(temperature as f64).unwrap(),
131 ),
132 );
133 }
134 if let Some(top_p) = request.top_p {
135 parameters.insert(
136 "top_p".to_string(),
137 serde_json::Value::Number(serde_json::Number::from_f64(top_p as f64).unwrap()),
138 );
139 }
140
141 // Add extra parameters
142 for (key, value) in request.extra_params {
143 parameters.insert(key, value);
144 }
145
146 let body = HuggingFaceRequest {
147 inputs,
148 parameters: if parameters.is_empty() {
149 None
150 } else {
151 Some(parameters)
152 },
153 options: Some(HuggingFaceOptions {
154 wait_for_model: true,
155 use_cache: false,
156 }),
157 };
158
159 let response = self
160 .client
161 .post(&url)
162 .header("Authorization", format!("Bearer {}", self.api_key))
163 .header("Content-Type", "application/json")
164 .json(&body)
165 .send()
166 .await
167 .map_err(|e| {
168 GraphBitError::llm_provider("huggingface", format!("Request failed: {e}"))
169 })?;
170

Callers

nothing calls this directly

Calls 5

insertMethod · 0.80
to_stringMethod · 0.80
is_emptyMethod · 0.45
is_successMethod · 0.45
parse_responseMethod · 0.45

Tested by

no test coverage detected