| 102 | } |
| 103 | |
| 104 | const withVariant = ( |
| 105 | model: ModelV2.Info, |
| 106 | variantID: ModelV2.VariantID | undefined, |
| 107 | ): Effect.Effect<ModelV2.Info, VariantUnavailableError> => { |
| 108 | const id = variantID === "default" || variantID === undefined ? model.request.variant : variantID |
| 109 | const variant = model.variants.find((item) => item.id === id) |
| 110 | if (!variant && variantID !== undefined && variantID !== "default") |
| 111 | return Effect.fail( |
| 112 | new VariantUnavailableError({ |
| 113 | providerID: model.providerID, |
| 114 | modelID: model.id, |
| 115 | variant: variantID, |
| 116 | }), |
| 117 | ) |
| 118 | return Effect.succeed( |
| 119 | variant |
| 120 | ? produce(model, (draft) => { |
| 121 | Object.assign(draft.request.headers, variant.headers) |
| 122 | Object.assign(draft.request.body, variant.body) |
| 123 | }) |
| 124 | : model, |
| 125 | ) |
| 126 | } |
| 127 | |
| 128 | const apiName = (model: ModelV2.Info) => |
| 129 | model.api.type === "aisdk" ? `${model.api.type}:${model.api.package}` : model.api.type |