-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathvision_capability.cpp
More file actions
42 lines (34 loc) · 1.3 KB
/
Copy pathvision_capability.cpp
File metadata and controls
42 lines (34 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// src/provider/vision_capability.cpp
#include "vision_capability.hpp"
#include "../config/model_provider_registry.hpp"
#include <algorithm>
#include <utility>
namespace acecode {
namespace {
constexpr const char* kVisionCapability = "vision";
} // namespace
bool model_profile_has_vision(const ModelProfile& profile) {
return std::find(profile.capabilities.begin(),
profile.capabilities.end(),
kVisionCapability) != profile.capabilities.end();
}
std::vector<ModelProfile> runtime_vision_profiles(const AppConfig& config) {
std::vector<ModelProfile> out;
for (auto profile : config.saved_models) {
if (!is_runtime_model_provider_enabled(profile.provider)) continue;
if (!model_profile_has_vision(profile)) continue;
if (profile.provider == "openai" && !profile.stream_timeout_ms.has_value()) {
profile.stream_timeout_ms = config.openai.stream_timeout_ms;
}
out.push_back(std::move(profile));
}
return out;
}
bool has_any_runtime_vision_model(const AppConfig& config) {
for (const auto& profile : config.saved_models) {
if (!is_runtime_model_provider_enabled(profile.provider)) continue;
if (model_profile_has_vision(profile)) return true;
}
return false;
}
} // namespace acecode