mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-04 17:38:10 +00:00
pipeline 2 cost estimates
This commit is contained in:
1 parent
a782715cc5
commit
c994bfcb4c
1 file changed
+31
-18
+31
-18
@@ -6,6 +6,7 @@ use artcraft_api_defs::omni_gen::cost_and_generate_requests::omni_gen_video_cost
|
||||
use artcraft_api_defs::omni_gen::cost_response::omni_gen_video_cost_response::OmniGenVideoCostResponse;
|
||||
use artcraft_router::api::provider::Provider;
|
||||
use artcraft_router::errors::artcraft_router_error::ArtcraftRouterError;
|
||||
use artcraft_router::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate;
|
||||
use log::warn;
|
||||
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
@@ -29,27 +30,39 @@ pub async fn omni_gen_video_cost_handler(
|
||||
request: Json<OmniGenVideoCostAndGenerateRequest>,
|
||||
_server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<OmniGenVideoCostResponse>, AdvancedCommonWebError> {
|
||||
let mut generate_request = hydrate_to_router_request(&request)?;
|
||||
generate_request.provider = Provider::Artcraft;
|
||||
let mut builder = hydrate_to_router_request(&request)?;
|
||||
builder.provider = Provider::Artcraft;
|
||||
|
||||
let plan = match generate_request.build() {
|
||||
Ok(plan) => plan,
|
||||
Err(ArtcraftRouterError::UnsupportedModel(_)) => {
|
||||
generate_request.provider = Provider::Fal;
|
||||
generate_request.build()
|
||||
.map_err(|e| {
|
||||
warn!("Failed to build Fal cost plan: {}", e);
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?
|
||||
}
|
||||
Err(e) => {
|
||||
warn!("Failed to build cost plan: {}", e);
|
||||
return Err(AdvancedCommonWebError::from_error(e));
|
||||
}
|
||||
let estimate = if builder.use_new_builder() {
|
||||
builder.build2()
|
||||
.map_err(|e| {
|
||||
warn!("Failed to build2 cost estimate: {}", e);
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?
|
||||
.estimate_cost()
|
||||
.map_err(|e| {
|
||||
warn!("Failed to estimate cost (v2): {}", e);
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?
|
||||
} else {
|
||||
let plan = match builder.build() {
|
||||
Ok(plan) => plan,
|
||||
Err(ArtcraftRouterError::UnsupportedModel(_)) => {
|
||||
builder.provider = Provider::Fal;
|
||||
builder.build()
|
||||
.map_err(|e| {
|
||||
warn!("Failed to build Fal cost plan: {}", e);
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?
|
||||
}
|
||||
Err(e) => {
|
||||
warn!("Failed to build cost plan: {}", e);
|
||||
return Err(AdvancedCommonWebError::from_error(e));
|
||||
}
|
||||
};
|
||||
plan.estimate_costs()
|
||||
};
|
||||
|
||||
let estimate = plan.estimate_costs();
|
||||
|
||||
Ok(Json(OmniGenVideoCostResponse {
|
||||
success: true,
|
||||
cost_in_credits: estimate.cost_in_credits,
|
||||
|
||||
Reference in new issue
Block a user