feat: add huggingface provider and new model logos
- Add HuggingFace as AI provider with model fetching - Add Poolside, Tencent, and HuggingFace logo components - Update model mappings for new providers - Add @ai-sdk/huggingface dependency - Bump longcat-ai-sdk-provider to 0.0.5
This commit is contained in:
@@ -0,0 +1,48 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
defineProps<{
|
||||||
|
size?: string | number;
|
||||||
|
color?: boolean;
|
||||||
|
avatar?: boolean;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
const TITLE = 'HuggingFace';
|
||||||
|
|
||||||
|
const BACKGROUND_COLOR = "#FFF";
|
||||||
|
const AVATAR_SCALE = 0.75;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="inline-flex items-center justify-center"
|
||||||
|
:style="[`width: ${size}px; height: ${size}px;`, avatar ? `background: ${BACKGROUND_COLOR}; border-radius: 0.375rem;` : '']">
|
||||||
|
<svg v-if="color && !avatar"
|
||||||
|
:style="[`width: ${size}px; height: ${size}px; flex: none; line-height: 1;`, avatar ? `transform: scale(${AVATAR_SCALE});` : '']"
|
||||||
|
viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<title>{{ TITLE }}</title>
|
||||||
|
<path
|
||||||
|
d="M2.25 11.535c0-3.407 1.847-6.554 4.844-8.258a9.822 9.822 0 019.687 0c2.997 1.704 4.844 4.851 4.844 8.258 0 5.266-4.337 9.535-9.687 9.535S2.25 16.8 2.25 11.535z"
|
||||||
|
fill="#FF9D0B" />
|
||||||
|
<path
|
||||||
|
d="M11.938 20.086c4.797 0 8.687-3.829 8.687-8.551 0-4.722-3.89-8.55-8.687-8.55-4.798 0-8.688 3.828-8.688 8.55 0 4.722 3.89 8.55 8.688 8.55z"
|
||||||
|
fill="#FFD21E" />
|
||||||
|
<path
|
||||||
|
d="M11.875 15.113c2.457 0 3.25-2.156 3.25-3.263 0-.576-.393-.394-1.023-.089-.582.283-1.365.675-2.224.675-1.798 0-3.25-1.693-3.25-.586 0 1.107.79 3.263 3.25 3.263h-.003z"
|
||||||
|
fill="#FF323D" />
|
||||||
|
<path
|
||||||
|
d="M14.76 9.21c.32.108.445.753.767.585.447-.233.707-.708.659-1.204a1.235 1.235 0 00-.879-1.059 1.262 1.262 0 00-1.33.394c-.322.384-.377.92-.14 1.36.153.283.638-.177.925-.079l-.002.003zm-5.887 0c-.32.108-.448.753-.768.585a1.226 1.226 0 01-.658-1.204c.048-.495.395-.913.878-1.059a1.262 1.262 0 011.33.394c.322.384.377.92.14 1.36-.152.283-.64-.177-.925-.079l.003.003zm1.12 5.34a2.166 2.166 0 011.325-1.106c.07-.02.144.06.219.171l.192.306c.069.1.139.175.209.175.074 0 .15-.074.223-.172l.205-.302c.08-.11.157-.188.234-.165.537.168.986.536 1.25 1.026.932-.724 1.275-1.905 1.275-2.633 0-.508-.306-.426-.81-.19l-.616.296c-.52.24-1.148.48-1.824.48-.676 0-1.302-.24-1.823-.48l-.589-.283c-.52-.248-.838-.342-.838.177 0 .703.32 1.831 1.187 2.56l.18.14z"
|
||||||
|
fill="#3A3B45" />
|
||||||
|
<path
|
||||||
|
d="M17.812 10.366a.806.806 0 00.813-.8c0-.441-.364-.8-.813-.8a.806.806 0 00-.812.8c0 .442.364.8.812.8zm-11.624 0a.806.806 0 00.812-.8c0-.441-.364-.8-.812-.8a.806.806 0 00-.813.8c0 .442.364.8.813.8zM4.515 13.073c-.405 0-.765.162-1.017.46a1.455 1.455 0 00-.333.925 1.801 1.801 0 00-.485-.074c-.387 0-.737.146-.985.409a1.41 1.41 0 00-.2 1.722 1.302 1.302 0 00-.447.694c-.06.222-.12.69.2 1.166a1.267 1.267 0 00-.093 1.236c.238.533.81.958 1.89 1.405l.24.096c.768.3 1.473.492 1.478.494.89.243 1.808.375 2.732.394 1.465 0 2.513-.443 3.115-1.314.93-1.342.842-2.575-.274-3.763l-.151-.154c-.692-.684-1.155-1.69-1.25-1.912-.195-.655-.71-1.383-1.562-1.383-.46.007-.889.233-1.15.605-.25-.31-.495-.553-.715-.694a1.87 1.87 0 00-.993-.312zm14.97 0c.405 0 .767.162 1.017.46.216.262.333.588.333.925.158-.047.322-.071.487-.074.388 0 .738.146.985.409a1.41 1.41 0 01.2 1.722c.22.178.377.422.445.694.06.222.12.69-.2 1.166.244.37.279.836.093 1.236-.238.533-.81.958-1.889 1.405l-.239.096c-.77.3-1.475.492-1.48.494-.89.243-1.808.375-2.732.394-1.465 0-2.513-.443-3.115-1.314-.93-1.342-.842-2.575.274-3.763l.151-.154c.695-.684 1.157-1.69 1.252-1.912.195-.655.708-1.383 1.56-1.383.46.007.889.233 1.15.605.25-.31.495-.553.718-.694.244-.162.523-.265.814-.3l.176-.012z"
|
||||||
|
fill="#FF9D0B" />
|
||||||
|
<path
|
||||||
|
d="M9.785 20.132c.688-.994.638-1.74-.305-2.667-.945-.928-1.495-2.288-1.495-2.288s-.205-.788-.672-.714c-.468.074-.81 1.25.17 1.971.977.721-.195 1.21-.573.534-.375-.677-1.405-2.416-1.94-2.751-.532-.332-.907-.148-.782.541.125.687 2.357 2.35 2.14 2.707-.218.362-.983-.42-.983-.42S2.953 14.9 2.43 15.46c-.52.558.398 1.026 1.7 1.803 1.308.778 1.41.985 1.225 1.28-.187.295-3.07-2.1-3.34-1.083-.27 1.011 2.943 1.304 2.745 2.006-.2.7-2.265-1.324-2.685-.537-.425.79 2.913 1.718 2.94 1.725 1.075.276 3.813.859 4.77-.522zm4.432 0c-.687-.994-.64-1.74.305-2.667.943-.928 1.493-2.288 1.493-2.288s.205-.788.675-.714c.465.074.807 1.25-.17 1.971-.98.721.195 1.21.57.534.377-.677 1.407-2.416 1.94-2.751.532-.332.91-.148.782.541-.125.687-2.355 2.35-2.137 2.707.215.362.98-.42.98-.42S21.05 14.9 21.57 15.46c.52.558-.395 1.026-1.7 1.803-1.308.778-1.408.985-1.225 1.28.187.295 3.07-2.1 3.34-1.083.27 1.011-2.94 1.304-2.743 2.006.2.7 2.263-1.324 2.685-.537.423.79-2.912 1.718-2.94 1.725-1.077.276-3.815.859-4.77-.522z"
|
||||||
|
fill="#FFD21E" />
|
||||||
|
</svg>
|
||||||
|
<svg v-else fill="currentColor" fill-rule="evenodd" :height="size" style="flex: none; line-height: 1;"
|
||||||
|
:style="[`width: ${size}px; height: ${size}px; flex: none; line-height: 1;`, avatar ? `transform: scale(${AVATAR_SCALE});` : '']"
|
||||||
|
viewBox="0 0 24 24" :width="size" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<title>{{ TITLE }}</title>
|
||||||
|
<path
|
||||||
|
d="M16.781 3.277c2.997 1.704 4.844 4.851 4.844 8.258 0 .995-.155 1.955-.443 2.857a1.332 1.332 0 011.125.4 1.41 1.41 0 01.2 1.723c.204.165.352.385.428.632l.017.062c.06.222.12.69-.2 1.166.244.37.279.836.093 1.236-.255.57-.893 1.018-2.128 1.5l-.202.078-.131.048c-.478.173-.89.295-1.061.345l-.086.024c-.89.243-1.808.375-2.732.394-1.32 0-2.3-.36-2.923-1.067a9.852 9.852 0 01-3.18.018C9.778 21.647 8.802 22 7.494 22a11.249 11.249 0 01-2.541-.343l-.221-.06-.273-.08a16.574 16.574 0 01-1.175-.405c-1.237-.483-1.875-.93-2.13-1.501-.186-.4-.151-.867.093-1.236a1.42 1.42 0 01-.2-1.166c.069-.273.226-.516.447-.694a1.41 1.41 0 01.2-1.722c.233-.248.557-.391.917-.407l.078-.001a9.385 9.385 0 01-.44-2.85c0-3.407 1.847-6.554 4.844-8.258a9.822 9.822 0 019.687 0zM4.188 14.758c.125.687 2.357 2.35 2.14 2.707-.19.315-.796-.239-.948-.386l-.041-.04-.168-.147c-.561-.479-2.304-1.9-2.74-1.432-.43.46.119.859 1.055 1.42l.784.467.136.083c1.045.643 1.12.84.95 1.113-.188.295-3.07-2.1-3.34-1.083-.27 1.011 2.942 1.304 2.744 2.006-.2.7-2.265-1.324-2.685-.537-.425.79 2.913 1.718 2.94 1.725l.16.04.175.042c1.227.284 3.565.65 4.435-.604.673-.973.64-1.709-.248-2.61l-.057-.057c-.945-.928-1.495-2.288-1.495-2.288l-.017-.058-.025-.072c-.082-.22-.284-.639-.63-.584-.46.073-.798 1.21.12 1.933l.05.038c.977.721-.195 1.21-.573.534l-.058-.104-.143-.25c-.463-.799-1.282-2.111-1.739-2.397-.532-.332-.907-.148-.782.541zm14.842-.541c-.533.335-1.563 2.074-1.94 2.751a.613.613 0 01-.687.302.436.436 0 01-.176-.098.303.303 0 01-.049-.06l-.014-.028-.008-.02-.007-.019-.003-.013-.003-.017a.289.289 0 01-.004-.048c0-.12.071-.266.25-.427.026-.024.054-.047.084-.07l.047-.036c.022-.016.043-.032.063-.049.883-.71.573-1.81.131-1.917l-.031-.006-.056-.004a.368.368 0 00-.062.006l-.028.005-.042.014-.039.017-.028.015-.028.019-.036.027-.023.02c-.173.158-.273.428-.31.542l-.016.054s-.53 1.309-1.439 2.234l-.054.054c-.365.358-.596.69-.702 1.018-.143.437-.066.868.21 1.353.055.097.117.195.187.296.882 1.275 3.282.876 4.494.59l.286-.07.25-.074c.276-.084.736-.233 1.2-.42l.188-.077.065-.028.064-.028.124-.056.081-.038c.529-.252.964-.543.994-.827l.001-.036a.299.299 0 00-.037-.139c-.094-.176-.271-.212-.491-.168l-.045.01c-.044.01-.09.024-.136.04l-.097.035-.054.022c-.559.23-1.238.705-1.607.745h.006a.452.452 0 01-.05.003h-.024l-.024-.003-.023-.005c-.068-.016-.116-.06-.14-.142a.22.22 0 01-.005-.1c.062-.345.958-.595 1.713-.91l.066-.028c.528-.224.97-.483.985-.832v-.04a.47.47 0 00-.016-.098c-.048-.18-.175-.251-.36-.251-.785 0-2.55 1.36-2.92 1.36-.025 0-.048-.007-.058-.024a.6.6 0 01-.046-.088c-.1-.238.068-.462 1.06-1.066l.209-.126c.538-.32 1.01-.588 1.341-.831.29-.212.475-.406.503-.6l.003-.028c.008-.113-.038-.227-.147-.344a.266.266 0 00-.07-.054l-.034-.015-.013-.005a.403.403 0 00-.13-.02c-.162 0-.369.07-.595.18-.637.313-1.431.952-1.826 1.285l-.249.215-.033.033c-.08.078-.288.27-.493.386l-.071.037-.041.019a.535.535 0 01-.122.036h.005a.346.346 0 01-.031.003l.01-.001-.013.001c-.079.005-.145-.021-.19-.095a.113.113 0 01-.014-.065c.027-.465 2.034-1.991 2.152-2.642l.009-.048c.1-.65-.271-.817-.791-.493zM11.938 2.984c-4.798 0-8.688 3.829-8.688 8.55 0 .692.083 1.364.24 2.008l.008-.009c.252-.298.612-.46 1.017-.46.355.008.699.117.993.312.22.14.465.384.715.694.261-.372.69-.598 1.15-.605.852 0 1.367.728 1.562 1.383l.047.105.06.127c.192.396.595 1.139 1.143 1.68 1.06 1.04 1.324 2.115.8 3.266a8.865 8.865 0 002.024-.014c-.505-1.12-.26-2.17.74-3.186l.066-.066c.695-.684 1.157-1.69 1.252-1.912.195-.655.708-1.383 1.56-1.383.46.007.889.233 1.15.605.25-.31.495-.553.718-.694a1.87 1.87 0 01.99-.312c.357 0 .682.126.925.36.14-.61.215-1.245.215-1.898 0-4.722-3.89-8.55-8.687-8.55zm1.857 8.926l.439-.212c.553-.264.89-.383.89.152 0 1.093-.771 3.208-3.155 3.262h-.184c-2.325-.052-3.116-2.06-3.156-3.175l-.001-.087c0-1.107 1.452.586 3.25.586.716 0 1.379-.272 1.917-.526zm4.017-3.143c.45 0 .813.358.813.8 0 .441-.364.8-.813.8a.806.806 0 01-.812-.8c0-.442.364-.8.812-.8zm-11.624 0c.448 0 .812.358.812.8 0 .441-.364.8-.812.8a.806.806 0 01-.813-.8c0-.442.364-.8.813-.8zm7.79-.841c.32-.384.846-.54 1.33-.394.483.146.83.564.878 1.06.048.495-.212.97-.659 1.203-.322.168-.447-.477-.767-.585l.002-.003c-.287-.098-.772.362-.925.079a1.215 1.215 0 01.14-1.36zm-4.323 0c.322.384.377.92.14 1.36-.152.283-.64-.177-.925-.079l.003.003c-.108.036-.194.134-.273.24l-.118.165c-.11.15-.22.262-.377.18a1.226 1.226 0 01-.658-1.204c.048-.495.395-.913.878-1.059a1.262 1.262 0 011.33.394z" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
defineProps<{
|
||||||
|
size?: string | number;
|
||||||
|
color?: boolean;
|
||||||
|
avatar?: boolean;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
const TITLE = 'Poolside';
|
||||||
|
|
||||||
|
const BACKGROUND_COLOR = "#4137FF";
|
||||||
|
const AVATAR_SCALE = 0.7;
|
||||||
|
|
||||||
|
const [a, b, c, d] = useFillIds(TITLE, 4);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="inline-flex items-center justify-center"
|
||||||
|
:style="[`width: ${size}px; height: ${size}px;`, avatar ? `background-color: ${BACKGROUND_COLOR}; border-radius: 0.375rem;` : '']">
|
||||||
|
<!-- TODO: scale to 24px -->
|
||||||
|
<svg :style="[`width: ${size}px; height: ${size}px; flex: none; line-height: 1;`, avatar ? `transform: scale(${AVATAR_SCALE});` : '']"
|
||||||
|
style="flex: none; line-height: 1;" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<title>{{ TITLE }}</title>
|
||||||
|
<mask :id="d!.id" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="32">
|
||||||
|
<rect width="32" height="32" :fill="a!.fill" style="" />
|
||||||
|
<rect width="32" height="32" :fill="b!.fill" style="" />
|
||||||
|
<rect width="32" height="32" :fill="c!.fill" style="" />
|
||||||
|
</mask>
|
||||||
|
<g :mask="d!.fill">
|
||||||
|
<path
|
||||||
|
d="M8.98976 30.3815C6.02045 28.9329 3.60852 26.6447 2.01266 23.7643C0.453682 20.9498 -0.219858 17.775 0.0629571 14.5827C0.126988 13.8674 0.757216 13.3392 1.47289 13.4024C2.18722 13.466 2.71622 14.0968 2.65309 14.8126C2.41613 17.4865 2.98128 20.1467 4.28757 22.5053C5.41219 24.536 7.023 26.2153 8.9891 27.4192L15.1043 14.8784C12.7106 14.0812 10.7169 14.4282 10.5375 14.4631C10.5112 14.4692 10.4858 14.4735 10.4599 14.4786C9.86386 14.5784 9.28735 14.2527 9.05527 13.7111C8.73499 13.1131 7.77341 11.6515 6.60959 11.0837C5.44577 10.516 3.65213 10.6991 3.07471 10.8246C2.58789 10.931 2.08122 10.7494 1.77371 10.358C1.4662 9.9665 1.40726 9.43259 1.62554 8.98496C5.48998 1.05529 15.087 -2.24965 23.0153 1.61816C30.9437 5.48598 34.2453 15.0756 30.3875 23.003C30.3836 23.0111 30.3796 23.0192 30.3752 23.0282C26.504 30.949 16.9145 34.2476 8.98976 30.3815ZM17.44 16.0179L11.3253 28.5578C17.4968 30.8631 24.5196 28.3019 27.731 22.4803C27.2796 21.7817 26.4875 20.78 25.5709 20.3328C24.3864 19.7549 22.6509 19.9442 22.0547 20.0695C21.9566 20.0928 21.8588 20.1041 21.7604 20.105C21.5842 20.1059 21.4054 20.071 21.2339 19.9962C21.056 19.9183 20.8952 19.8009 20.7654 19.6497C20.6912 19.5623 20.6299 19.4667 20.5806 19.3648C20.5422 19.2882 19.5939 17.4481 17.4391 16.0175L17.44 16.0179ZM7.74737 8.74582C8.74313 9.2316 9.5548 10.0037 10.1608 10.7321C12.0348 7.86545 14.578 5.70023 16.5425 4.3042C17.2726 3.78579 18.0284 3.30111 18.7563 2.88291C13.6429 1.80923 8.28375 3.83577 5.1764 8.10245C5.99889 8.15876 6.90528 8.33501 7.74737 8.74582ZM24.6415 5.75507C24.7602 6.58628 24.8441 7.47954 24.8847 8.37503C24.9943 10.7762 24.8555 14.1022 23.7588 17.3369C24.6735 17.3614 25.7372 17.5232 26.7105 17.998C27.5795 18.4219 28.3081 19.0633 28.8814 19.7035C30.3453 14.6184 28.6441 9.13194 24.6411 5.75597L24.6415 5.75507ZM17.4489 13.0336C19.2472 13.9109 20.5471 15.078 21.4282 16.0842C22.8614 11.427 22.2366 6.21527 21.7149 4.28506C19.873 5.06221 15.3815 7.77795 12.5957 11.7753C13.9322 11.8499 15.6515 12.1568 17.4489 13.0336Z"
|
||||||
|
:fill="!avatar && color ? '#4137FF' : 'currentColor'" style="fill-opacity:1;" />
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<linearGradient :id="a!.id" x1="9" y1="27.4" x2="7.5" y2="27.4" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop style="stop-color:black;stop-opacity:1;" />
|
||||||
|
<stop offset="1" stop-opacity="0" style="stop-color:none;stop-opacity:0;" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient :id="b!.id" x1="9.1" y1="15.8" x2="9.6" y2="14.85" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-opacity="0" style="stop-color:none;stop-opacity:0;" />
|
||||||
|
<stop offset="1" style="stop-color:black;stop-opacity:1;" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient :id="c!.id" x1="1.3" y1="27.35" x2="1.3" y2="14.55" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop style="stop-color:black;stop-opacity:1;" />
|
||||||
|
<stop offset="0.105" stop-opacity="0.9" style="stop-color:black;stop-opacity:0.9;" />
|
||||||
|
<stop offset="0.903766" stop-opacity="0.04" style="stop-color:black;stop-opacity:0.04;" />
|
||||||
|
<stop offset="1" stop-opacity="0" style="stop-color:none;stop-opacity:0;" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
defineProps<{
|
||||||
|
size?: string | number;
|
||||||
|
color?: boolean;
|
||||||
|
avatar?: boolean;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
const TITLE = 'Tencent';
|
||||||
|
|
||||||
|
const BACKGROUND_COLOR = "#0052D9";
|
||||||
|
const AVATAR_SCALE = 0.75;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="inline-flex items-center justify-center"
|
||||||
|
:style="[`width: ${size}px; height: ${size}px;`, avatar ? `background: ${BACKGROUND_COLOR}; border-radius: 0.375rem;` : '']">
|
||||||
|
<svg :style="[`width: ${size}px; height: ${size}px; flex: none; line-height: 1;`, avatar ? `transform: scale(${AVATAR_SCALE});` : '']"
|
||||||
|
viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<title>{{ TITLE }}</title>
|
||||||
|
<path d="M9.976 1L24 9.8l-10.587.015L10.723 23H5.489L8.18 9.8H3.244L1 5.4h8.077L9.976 1z"
|
||||||
|
:fill="color && !avatar ? '#0052D9' : 'currentColor'" fillRule="evenodd" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -52,6 +52,9 @@ import {
|
|||||||
LogoInflection,
|
LogoInflection,
|
||||||
LogoVllm,
|
LogoVllm,
|
||||||
LogoClosedRouter,
|
LogoClosedRouter,
|
||||||
|
LogoPoolside,
|
||||||
|
LogoTencent,
|
||||||
|
LogoHuggingFace,
|
||||||
} from '#components';
|
} from '#components';
|
||||||
import { markRaw } from 'vue';
|
import { markRaw } from 'vue';
|
||||||
|
|
||||||
@@ -161,7 +164,7 @@ const MODEL_MAPPINGS: ModelConfig[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
Icon: markRaw(LogoZAI),
|
Icon: markRaw(LogoZAI),
|
||||||
keywords: [/^glm-4/, /\/glm-4/, /zai-/, /-glm-4/, /glm-\d/]
|
keywords: [/zai-/, /(^|\/|-)?glm-?\d/]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Icon: markRaw(LogoGLMV),
|
Icon: markRaw(LogoGLMV),
|
||||||
@@ -314,6 +317,14 @@ const MODEL_MAPPINGS: ModelConfig[] = [
|
|||||||
{
|
{
|
||||||
Icon: markRaw(LogoInflection),
|
Icon: markRaw(LogoInflection),
|
||||||
keywords: [/inflection-/, /^inflection\//]
|
keywords: [/inflection-/, /^inflection\//]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Icon: markRaw(LogoPoolside),
|
||||||
|
keywords: [/poolside\//, /laguna/]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Icon: markRaw(LogoTencent),
|
||||||
|
keywords: [/tencent\//, /hy/],
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -324,7 +335,7 @@ export const providerIcons: Record<string, any | null> = {
|
|||||||
azure: null,
|
azure: null,
|
||||||
anthropic: markRaw(LogoAnthropic),
|
anthropic: markRaw(LogoAnthropic),
|
||||||
cohere: markRaw(LogoCohere),
|
cohere: markRaw(LogoCohere),
|
||||||
huggingface: null,
|
huggingface: markRaw(LogoHuggingFace),
|
||||||
openrouter: markRaw(LogoOpenrouter),
|
openrouter: markRaw(LogoOpenrouter),
|
||||||
cerebras: markRaw(LogoCerebras),
|
cerebras: markRaw(LogoCerebras),
|
||||||
longcat: markRaw(LogoLongCat),
|
longcat: markRaw(LogoLongCat),
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
"@ai-sdk/cerebras": "^2.0.45",
|
"@ai-sdk/cerebras": "^2.0.45",
|
||||||
"@ai-sdk/cohere": "^3.0.30",
|
"@ai-sdk/cohere": "^3.0.30",
|
||||||
"@ai-sdk/google": "^3.0.61",
|
"@ai-sdk/google": "^3.0.61",
|
||||||
|
"@ai-sdk/huggingface": "^1.0.43",
|
||||||
"@ai-sdk/mistral": "^3.0.30",
|
"@ai-sdk/mistral": "^3.0.30",
|
||||||
"@ai-sdk/openai": "^3.0.52",
|
"@ai-sdk/openai": "^3.0.52",
|
||||||
"@ai-sdk/openai-compatible": "^2.0.41",
|
"@ai-sdk/openai-compatible": "^2.0.41",
|
||||||
@@ -30,7 +31,7 @@
|
|||||||
"comlink": "^4.4.2",
|
"comlink": "^4.4.2",
|
||||||
"drizzle-orm": "^1.0.0-beta.21",
|
"drizzle-orm": "^1.0.0-beta.21",
|
||||||
"glob": "^13.0.6",
|
"glob": "^13.0.6",
|
||||||
"longcat-ai-sdk-provider": "^0.0.4",
|
"longcat-ai-sdk-provider": "^0.0.5",
|
||||||
"nanoid": "^5.1.7",
|
"nanoid": "^5.1.7",
|
||||||
"nuxt": "^4.4.2",
|
"nuxt": "^4.4.2",
|
||||||
"pg": "^8.20.0",
|
"pg": "^8.20.0",
|
||||||
@@ -80,6 +81,8 @@
|
|||||||
|
|
||||||
"@ai-sdk/google": ["@ai-sdk/google@3.0.61", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-jEKU1Mjcy5CoicejdJQIzM0ntYwyXR8vtYgAZYriKaOuLAiAhiiU538++fGU3CC9HJH/mL1OfsCwMM3gFiCNsw=="],
|
"@ai-sdk/google": ["@ai-sdk/google@3.0.61", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-jEKU1Mjcy5CoicejdJQIzM0ntYwyXR8vtYgAZYriKaOuLAiAhiiU538++fGU3CC9HJH/mL1OfsCwMM3gFiCNsw=="],
|
||||||
|
|
||||||
|
"@ai-sdk/huggingface": ["@ai-sdk/huggingface@1.0.43", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.41", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-bEHZNmQNabbs7zYjRa7e0Hz1RFiVwm/hjfZ2YFwTFsxC0WmPSSvjyG5SqRM8DApbSC2EtGP5K/zO2IKEXZrYyQ=="],
|
||||||
|
|
||||||
"@ai-sdk/mistral": ["@ai-sdk/mistral@3.0.30", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-+j4IXRSk9E661cFSafmIr+XHOzwjFagawwzMOlSqwL6U4Sq4PCFLDF+oHbX5NUqNjUL7FD1zi/9lBIfa41pUvw=="],
|
"@ai-sdk/mistral": ["@ai-sdk/mistral@3.0.30", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-+j4IXRSk9E661cFSafmIr+XHOzwjFagawwzMOlSqwL6U4Sq4PCFLDF+oHbX5NUqNjUL7FD1zi/9lBIfa41pUvw=="],
|
||||||
|
|
||||||
"@ai-sdk/openai": ["@ai-sdk/openai@3.0.52", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-4Rr8NCGmfWTz6DCUvixn9UmyZcMatiHn0zWoMzI3JCUe9R1P/vsPOpCBALKoSzVYOjyJnhtnVIbfUKujcS39uw=="],
|
"@ai-sdk/openai": ["@ai-sdk/openai@3.0.52", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-4Rr8NCGmfWTz6DCUvixn9UmyZcMatiHn0zWoMzI3JCUe9R1P/vsPOpCBALKoSzVYOjyJnhtnVIbfUKujcS39uw=="],
|
||||||
@@ -1778,7 +1781,7 @@
|
|||||||
|
|
||||||
"lodash.uniq": ["lodash.uniq@4.5.0", "", {}, "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="],
|
"lodash.uniq": ["lodash.uniq@4.5.0", "", {}, "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="],
|
||||||
|
|
||||||
"longcat-ai-sdk-provider": ["longcat-ai-sdk-provider@0.0.4", "", { "dependencies": { "@ai-sdk/openai-compatible": "^2.0.37", "@ai-sdk/provider": "^3.0.8", "@ai-sdk/provider-utils": "^4.0.21" }, "peerDependencies": { "ai": ">=6.0.0" } }, "sha512-cAyxpYZIO9jRq7UJCt6tPqoBXUpIvKsvWJsJF1pMtRBGxm6SF96rgHDRupxpA5XX4ODqDo7LRE1hs3viEcLxoA=="],
|
"longcat-ai-sdk-provider": ["longcat-ai-sdk-provider@0.0.5", "", { "dependencies": { "@ai-sdk/openai-compatible": "^2.0.37", "@ai-sdk/provider": "^3.0.8", "@ai-sdk/provider-utils": "^4.0.21" }, "peerDependencies": { "ai": ">=6.0.0" } }, "sha512-VbuhUuJNXnjoRYnpKBi3TSqFsHJaRRlzjFC+Rv4cxbzgHl6KTcohNeVvgbB95p49lMl4kGH6I/VxgdPOSkAi8A=="],
|
||||||
|
|
||||||
"longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="],
|
"longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="],
|
||||||
|
|
||||||
@@ -2862,10 +2865,6 @@
|
|||||||
|
|
||||||
"listhen/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="],
|
"listhen/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="],
|
||||||
|
|
||||||
"longcat-ai-sdk-provider/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.37", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-+POSFVcgiu47BK64dhsI6OpcDC0/VAE2ZSaXdXGNNhpC/ava++uSRJYks0k2bpfY0wwCTgpAWZsXn/dG2Yppiw=="],
|
|
||||||
|
|
||||||
"longcat-ai-sdk-provider/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="],
|
|
||||||
|
|
||||||
"magic-regexp/unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="],
|
"magic-regexp/unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="],
|
||||||
|
|
||||||
"magicast/@babel/parser": ["@babel/parser@7.29.0", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww=="],
|
"magicast/@babel/parser": ["@babel/parser@7.29.0", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww=="],
|
||||||
|
|||||||
+2
-1
@@ -14,6 +14,7 @@
|
|||||||
"@ai-sdk/cerebras": "^2.0.45",
|
"@ai-sdk/cerebras": "^2.0.45",
|
||||||
"@ai-sdk/cohere": "^3.0.30",
|
"@ai-sdk/cohere": "^3.0.30",
|
||||||
"@ai-sdk/google": "^3.0.61",
|
"@ai-sdk/google": "^3.0.61",
|
||||||
|
"@ai-sdk/huggingface": "^1.0.43",
|
||||||
"@ai-sdk/mistral": "^3.0.30",
|
"@ai-sdk/mistral": "^3.0.30",
|
||||||
"@ai-sdk/openai": "^3.0.52",
|
"@ai-sdk/openai": "^3.0.52",
|
||||||
"@ai-sdk/openai-compatible": "^2.0.41",
|
"@ai-sdk/openai-compatible": "^2.0.41",
|
||||||
@@ -35,7 +36,7 @@
|
|||||||
"comlink": "^4.4.2",
|
"comlink": "^4.4.2",
|
||||||
"drizzle-orm": "^1.0.0-beta.21",
|
"drizzle-orm": "^1.0.0-beta.21",
|
||||||
"glob": "^13.0.6",
|
"glob": "^13.0.6",
|
||||||
"longcat-ai-sdk-provider": "^0.0.4",
|
"longcat-ai-sdk-provider": "^0.0.5",
|
||||||
"nanoid": "^5.1.7",
|
"nanoid": "^5.1.7",
|
||||||
"nuxt": "^4.4.2",
|
"nuxt": "^4.4.2",
|
||||||
"pg": "^8.20.0",
|
"pg": "^8.20.0",
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
import { createHuggingFace } from '@ai-sdk/huggingface';
|
||||||
|
import { GatewayFetchError } from '~~/server/utils/ai-provider';
|
||||||
|
import { Err, Ok } from '~~/types/result';
|
||||||
|
import type { ProviderModule } from '.';
|
||||||
|
import { getModelData } from './helpers';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
id: 'huggingface',
|
||||||
|
baseUrl: 'https://router.huggingface.co/v1',
|
||||||
|
modelsEndpoint: null,
|
||||||
|
|
||||||
|
createGateway({ apiKey, baseURL }) {
|
||||||
|
if (apiKey === undefined) {
|
||||||
|
return Err(GatewayFetchError.NoProviderApiKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Ok({
|
||||||
|
gateway: createHuggingFace({ apiKey, baseURL }),
|
||||||
|
streamTransformer: undefined,
|
||||||
|
textTransformer: undefined,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
getAuthHeaders(apiKey) {
|
||||||
|
return apiKey ? { Authorization: `Bearer ${apiKey}` } : {};
|
||||||
|
},
|
||||||
|
|
||||||
|
async fetchModels({ baseURL, apiKey, modelsDevData }) {
|
||||||
|
const res = await fetch(
|
||||||
|
'https://huggingface.co/api/models?pipeline_tag=text-generation&sort=downloads',
|
||||||
|
{
|
||||||
|
method: 'GET',
|
||||||
|
headers: apiKey ? { Authorization: `Bearer ${apiKey}` } : {},
|
||||||
|
},
|
||||||
|
);
|
||||||
|
const data = await res.json();
|
||||||
|
|
||||||
|
if (!res.ok) {
|
||||||
|
throw createError({ statusCode: res.status, message: JSON.stringify(data) });
|
||||||
|
}
|
||||||
|
|
||||||
|
return data
|
||||||
|
.filter((model: any) => model.tags?.includes('text-generation-inference'))
|
||||||
|
.map((model: any) => ({
|
||||||
|
...getModelData(model.id, 'huggingface', modelsDevData),
|
||||||
|
id: model.id,
|
||||||
|
name: model.id,
|
||||||
|
releasedAt: model.createdAt,
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
} satisfies ProviderModule;
|
||||||
@@ -12,6 +12,7 @@ import nvidia from './nvidia';
|
|||||||
import xiaomi from './xiaomi';
|
import xiaomi from './xiaomi';
|
||||||
import openai from './openai';
|
import openai from './openai';
|
||||||
import anthropic from './anthropic';
|
import anthropic from './anthropic';
|
||||||
|
import huggingface from './huggingface';
|
||||||
import type { Result } from '~~/types/result';
|
import type { Result } from '~~/types/result';
|
||||||
import type { Gateway, GatewayFetchError } from '~~/server/utils/ai-provider';
|
import type { Gateway, GatewayFetchError } from '~~/server/utils/ai-provider';
|
||||||
import type { Model as ModelDrizzle } from '~/composables/useModels';
|
import type { Model as ModelDrizzle } from '~/composables/useModels';
|
||||||
@@ -65,6 +66,7 @@ const providers = [
|
|||||||
xiaomi,
|
xiaomi,
|
||||||
openai,
|
openai,
|
||||||
anthropic,
|
anthropic,
|
||||||
|
huggingface,
|
||||||
];
|
];
|
||||||
|
|
||||||
type ProviderId = typeof providers[number]['id'];
|
type ProviderId = typeof providers[number]['id'];
|
||||||
|
|||||||
Reference in New Issue
Block a user