Skip to content

Commit 1f6eb10

Browse files
authored
Merge branch 'main' into feat/support-novita-async-t2v
2 parents 88b8e46 + 399ecd8 commit 1f6eb10

File tree

25 files changed

+1478
-48
lines changed

25 files changed

+1478
-48
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: Tiny Agents - Version and Release
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
newversion:
7+
type: choice
8+
description: "Semantic Version Bump Type"
9+
default: patch
10+
options:
11+
- patch
12+
- minor
13+
- major
14+
bypass_deps_check:
15+
type: boolean
16+
description: "Bypass dependency checking"
17+
default: false
18+
19+
concurrency:
20+
group: "push-to-main" # Consider changing this if tiny-agents has its own release concurrency group
21+
22+
defaults:
23+
run:
24+
working-directory: packages/tiny-agents
25+
26+
jobs:
27+
version_and_release:
28+
runs-on: ubuntu-latest
29+
steps:
30+
- uses: actions/checkout@v3
31+
with:
32+
token: ${{ secrets.BOT_ACCESS_TOKEN }}
33+
- run: npm install -g corepack@latest && corepack enable
34+
- uses: actions/setup-node@v3
35+
with:
36+
node-version: "20"
37+
cache: "pnpm"
38+
cache-dependency-path: |
39+
packages/tiny-agents/pnpm-lock.yaml
40+
packages/doc-internal/pnpm-lock.yaml
41+
registry-url: "https://registry.npmjs.org"
42+
- run: pnpm install
43+
- run: git config --global user.name machineuser
44+
- run: git config --global user.email [email protected]
45+
- run: |
46+
PACKAGE_VERSION=$(node -p "require('./package.json').version")
47+
BUMPED_VERSION=$(node -p "require('semver').inc('$PACKAGE_VERSION', '${{ github.event.inputs.newversion }}')")
48+
# Update package.json with the new version
49+
node -e "const fs = require('fs'); const package = JSON.parse(fs.readFileSync('./package.json')); package.version = '$BUMPED_VERSION'; fs.writeFileSync('./package.json', JSON.stringify(package, null, '\t') + '\n');"
50+
pnpm --filter doc-internal run fix-cdn-versions
51+
git add ../..
52+
git commit -m "🔖 @huggingface/tiny-agents $BUMPED_VERSION"
53+
git tag "tiny-agents-v$BUMPED_VERSION"
54+
55+
# Add checks for dependencies if needed, similar to hub-publish.yml
56+
- if: ${{ !github.event.inputs.bypass_deps_check }}
57+
name: "Check Deps are published before publishing this package"
58+
run: pnpm -w check-deps inference && pnpm -w check-deps tasks # Review if these specific deps apply to tiny-agents
59+
60+
- run: pnpm publish --no-git-checks .
61+
env:
62+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
63+
- run: (git pull --rebase && git push --follow-tags) || (git pull --rebase && git push --follow-tags)
64+
# hack - reuse actions/setup-node@v3 just to set a new registry
65+
- uses: actions/setup-node@v3
66+
with:
67+
node-version: "20"
68+
registry-url: "https://npm.pkg.github.com"
69+
# Disable for now, until github supports PATs for writing github packages (https://github.com/github/roadmap/issues/558)
70+
# - run: pnpm publish --no-git-checks .
71+
# env:
72+
# NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
73+
- name: "Update Doc"
74+
uses: peter-evans/repository-dispatch@v2
75+
with:
76+
event-type: doc-build
77+
token: ${{ secrets.BOT_ACCESS_TOKEN }}

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ You can run our packages with vanilla JS, without any bundler, by using a CDN or
9797

9898
```html
9999
<script type="module">
100-
import { InferenceClient } from 'https://cdn.jsdelivr.net/npm/@huggingface/[email protected].1/+esm';
100+
import { InferenceClient } from 'https://cdn.jsdelivr.net/npm/@huggingface/[email protected].2/+esm';
101101
import { createRepo, commit, deleteRepo, listFiles } from "https://cdn.jsdelivr.net/npm/@huggingface/[email protected]/+esm";
102102
</script>
103103
```
@@ -241,8 +241,8 @@ const agent = new Agent({
241241
],
242242
});
243243

244-
245244
await agent.loadTools();
245+
246246
for await (const chunk of agent.run("What are the top 5 trending models on Hugging Face?")) {
247247
if ("choices" in chunk) {
248248
const delta = chunk.choices[0]?.delta;

packages/inference/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@huggingface/inference",
3-
"version": "3.13.1",
3+
"version": "3.13.2",
44
"packageManager": "[email protected]",
55
"license": "MIT",
66
"author": "Hugging Face and Tim Mikeladze <[email protected]>",

packages/inference/src/lib/getProviderHelper.ts

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ import type {
4747
import * as Replicate from "../providers/replicate";
4848
import * as Sambanova from "../providers/sambanova";
4949
import * as Together from "../providers/together";
50-
import type { InferenceProvider, InferenceTask } from "../types";
50+
import type { InferenceProvider, InferenceProviderOrPolicy, InferenceTask } from "../types";
5151

5252
export const PROVIDERS: Record<InferenceProvider, Partial<Record<InferenceTask, TaskProviderHelper>>> = {
5353
"black-forest-labs": {
@@ -153,128 +153,132 @@ export const PROVIDERS: Record<InferenceProvider, Partial<Record<InferenceTask,
153153
* Get provider helper instance by name and task
154154
*/
155155
export function getProviderHelper(
156-
provider: InferenceProvider,
156+
provider: InferenceProviderOrPolicy,
157157
task: "text-to-image"
158158
): TextToImageTaskHelper & TaskProviderHelper;
159159
export function getProviderHelper(
160-
provider: InferenceProvider,
160+
provider: InferenceProviderOrPolicy,
161161
task: "conversational"
162162
): ConversationalTaskHelper & TaskProviderHelper;
163163
export function getProviderHelper(
164-
provider: InferenceProvider,
164+
provider: InferenceProviderOrPolicy,
165165
task: "text-generation"
166166
): TextGenerationTaskHelper & TaskProviderHelper;
167167
export function getProviderHelper(
168-
provider: InferenceProvider,
168+
provider: InferenceProviderOrPolicy,
169169
task: "text-to-speech"
170170
): TextToSpeechTaskHelper & TaskProviderHelper;
171171
export function getProviderHelper(
172-
provider: InferenceProvider,
172+
provider: InferenceProviderOrPolicy,
173173
task: "text-to-audio"
174174
): TextToAudioTaskHelper & TaskProviderHelper;
175175
export function getProviderHelper(
176-
provider: InferenceProvider,
176+
provider: InferenceProviderOrPolicy,
177177
task: "automatic-speech-recognition"
178178
): AutomaticSpeechRecognitionTaskHelper & TaskProviderHelper;
179179
export function getProviderHelper(
180-
provider: InferenceProvider,
180+
provider: InferenceProviderOrPolicy,
181181
task: "text-to-video"
182182
): TextToVideoTaskHelper & TaskProviderHelper;
183183
export function getProviderHelper(
184-
provider: InferenceProvider,
184+
provider: InferenceProviderOrPolicy,
185185
task: "text-classification"
186186
): TextClassificationTaskHelper & TaskProviderHelper;
187187
export function getProviderHelper(
188-
provider: InferenceProvider,
188+
provider: InferenceProviderOrPolicy,
189189
task: "question-answering"
190190
): QuestionAnsweringTaskHelper & TaskProviderHelper;
191191
export function getProviderHelper(
192-
provider: InferenceProvider,
192+
provider: InferenceProviderOrPolicy,
193193
task: "audio-classification"
194194
): AudioClassificationTaskHelper & TaskProviderHelper;
195195
export function getProviderHelper(
196-
provider: InferenceProvider,
196+
provider: InferenceProviderOrPolicy,
197197
task: "audio-to-audio"
198198
): AudioToAudioTaskHelper & TaskProviderHelper;
199199
export function getProviderHelper(
200-
provider: InferenceProvider,
200+
provider: InferenceProviderOrPolicy,
201201
task: "fill-mask"
202202
): FillMaskTaskHelper & TaskProviderHelper;
203203
export function getProviderHelper(
204-
provider: InferenceProvider,
204+
provider: InferenceProviderOrPolicy,
205205
task: "feature-extraction"
206206
): FeatureExtractionTaskHelper & TaskProviderHelper;
207207
export function getProviderHelper(
208-
provider: InferenceProvider,
208+
provider: InferenceProviderOrPolicy,
209209
task: "image-classification"
210210
): ImageClassificationTaskHelper & TaskProviderHelper;
211211
export function getProviderHelper(
212-
provider: InferenceProvider,
212+
provider: InferenceProviderOrPolicy,
213213
task: "image-segmentation"
214214
): ImageSegmentationTaskHelper & TaskProviderHelper;
215215
export function getProviderHelper(
216-
provider: InferenceProvider,
216+
provider: InferenceProviderOrPolicy,
217217
task: "document-question-answering"
218218
): DocumentQuestionAnsweringTaskHelper & TaskProviderHelper;
219219
export function getProviderHelper(
220-
provider: InferenceProvider,
220+
provider: InferenceProviderOrPolicy,
221221
task: "image-to-text"
222222
): ImageToTextTaskHelper & TaskProviderHelper;
223223
export function getProviderHelper(
224-
provider: InferenceProvider,
224+
provider: InferenceProviderOrPolicy,
225225
task: "object-detection"
226226
): ObjectDetectionTaskHelper & TaskProviderHelper;
227227
export function getProviderHelper(
228-
provider: InferenceProvider,
228+
provider: InferenceProviderOrPolicy,
229229
task: "zero-shot-image-classification"
230230
): ZeroShotImageClassificationTaskHelper & TaskProviderHelper;
231231
export function getProviderHelper(
232-
provider: InferenceProvider,
232+
provider: InferenceProviderOrPolicy,
233233
task: "zero-shot-classification"
234234
): ZeroShotClassificationTaskHelper & TaskProviderHelper;
235235
export function getProviderHelper(
236-
provider: InferenceProvider,
236+
provider: InferenceProviderOrPolicy,
237237
task: "image-to-image"
238238
): ImageToImageTaskHelper & TaskProviderHelper;
239239
export function getProviderHelper(
240-
provider: InferenceProvider,
240+
provider: InferenceProviderOrPolicy,
241241
task: "sentence-similarity"
242242
): SentenceSimilarityTaskHelper & TaskProviderHelper;
243243
export function getProviderHelper(
244-
provider: InferenceProvider,
244+
provider: InferenceProviderOrPolicy,
245245
task: "table-question-answering"
246246
): TableQuestionAnsweringTaskHelper & TaskProviderHelper;
247247
export function getProviderHelper(
248-
provider: InferenceProvider,
248+
provider: InferenceProviderOrPolicy,
249249
task: "tabular-classification"
250250
): TabularClassificationTaskHelper & TaskProviderHelper;
251251
export function getProviderHelper(
252-
provider: InferenceProvider,
252+
provider: InferenceProviderOrPolicy,
253253
task: "tabular-regression"
254254
): TabularRegressionTaskHelper & TaskProviderHelper;
255255
export function getProviderHelper(
256-
provider: InferenceProvider,
256+
provider: InferenceProviderOrPolicy,
257257
task: "token-classification"
258258
): TokenClassificationTaskHelper & TaskProviderHelper;
259259
export function getProviderHelper(
260-
provider: InferenceProvider,
260+
provider: InferenceProviderOrPolicy,
261261
task: "translation"
262262
): TranslationTaskHelper & TaskProviderHelper;
263263
export function getProviderHelper(
264-
provider: InferenceProvider,
264+
provider: InferenceProviderOrPolicy,
265265
task: "summarization"
266266
): SummarizationTaskHelper & TaskProviderHelper;
267267
export function getProviderHelper(
268-
provider: InferenceProvider,
268+
provider: InferenceProviderOrPolicy,
269269
task: "visual-question-answering"
270270
): VisualQuestionAnsweringTaskHelper & TaskProviderHelper;
271-
export function getProviderHelper(provider: InferenceProvider, task: InferenceTask | undefined): TaskProviderHelper;
271+
export function getProviderHelper(
272+
provider: InferenceProviderOrPolicy,
273+
task: InferenceTask | undefined
274+
): TaskProviderHelper;
272275

273-
export function getProviderHelper(provider: InferenceProvider, task: InferenceTask | undefined): TaskProviderHelper {
274-
if (provider === "hf-inference") {
275-
if (!task) {
276-
return new HFInference.HFInferenceTask();
277-
}
276+
export function getProviderHelper(
277+
provider: InferenceProviderOrPolicy,
278+
task: InferenceTask | undefined
279+
): TaskProviderHelper {
280+
if ((provider === "hf-inference" && !task) || provider === "auto") {
281+
return new HFInference.HFInferenceTask();
278282
}
279283
if (!task) {
280284
throw new Error("you need to provide a task name when using an external provider, e.g. 'text-to-image'");

packages/inference/src/snippets/getInferenceSnippets.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,7 @@ const snippetGenerator = (templateName: string, inputPreparationFn?: InputPrepar
144144
}
145145
let providerHelper: ReturnType<typeof getProviderHelper>;
146146
try {
147-
/// For the "auto" provider policy we use hf-inference snippets
148-
providerHelper = getProviderHelper(provider === "auto" ? "hf-inference" : provider, task);
147+
providerHelper = getProviderHelper(provider, task);
149148
} catch (e) {
150149
console.error(`Failed to get provider helper for ${provider} (${task})`, e);
151150
return [];

packages/mcp-client/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export * from "./McpClient";
22
export * from "./Agent";
33
export type { ChatCompletionInputMessageTool } from "./McpClient";
4+
export type { ServerConfig } from "./types";

packages/tasks/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@huggingface/tasks",
33
"packageManager": "[email protected]",
4-
"version": "0.19.6",
4+
"version": "0.19.7",
55
"description": "List of ML tasks for huggingface.co/tasks",
66
"repository": "https://github.com/huggingface/huggingface.js.git",
77
"publishConfig": {

packages/tasks/src/model-libraries-snippets.ts

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -593,6 +593,39 @@ export const keras_hub = (model: ModelData): string[] => {
593593
return snippets;
594594
};
595595

596+
export const kimi_audio = (model: ModelData): string[] => [
597+
`# Example usage for KimiAudio
598+
# pip install git+https://github.com/MoonshotAI/Kimi-Audio.git
599+
600+
from kimia_infer.api.kimia import KimiAudio
601+
602+
model = KimiAudio(model_path="${model.id}", load_detokenizer=True)
603+
604+
sampling_params = {
605+
"audio_temperature": 0.8,
606+
"audio_top_k": 10,
607+
"text_temperature": 0.0,
608+
"text_top_k": 5,
609+
}
610+
611+
# For ASR
612+
asr_audio = "asr_example.wav"
613+
messages_asr = [
614+
{"role": "user", "message_type": "text", "content": "Please transcribe the following audio:"},
615+
{"role": "user", "message_type": "audio", "content": asr_audio}
616+
]
617+
_, text = model.generate(messages_asr, **sampling_params, output_type="text")
618+
print(text)
619+
620+
# For Q&A
621+
qa_audio = "qa_example.wav"
622+
messages_conv = [{"role": "user", "message_type": "audio", "content": qa_audio}]
623+
wav, text = model.generate(messages_conv, **sampling_params, output_type="both")
624+
sf.write("output_audio.wav", wav.cpu().view(-1).numpy(), 24000)
625+
print(text)
626+
`,
627+
];
628+
596629
export const lightning_ir = (model: ModelData): string[] => {
597630
if (model.tags.includes("bi-encoder")) {
598631
return [
@@ -1164,10 +1197,11 @@ export const transformers = (model: ModelData): string[] => {
11641197
].join("\n"),
11651198
"]"
11661199
);
1200+
pipelineSnippet.push("pipe(text=messages)");
11671201
} else {
11681202
pipelineSnippet.push("messages = [", ' {"role": "user", "content": "Who are you?"},', "]");
1203+
pipelineSnippet.push("pipe(messages)");
11691204
}
1170-
pipelineSnippet.push("pipe(messages)");
11711205
}
11721206

11731207
return [pipelineSnippet.join("\n"), autoSnippet];
@@ -1354,15 +1388,14 @@ model = SwarmFormerModel.from_pretrained("${model.id}")
13541388

13551389
const mlx_unknown = (model: ModelData): string[] => [
13561390
`# Download the model from the Hub
1357-
pip install huggingface_hub hf_transfer
1391+
pip install huggingface_hub[hf_xet]
13581392
1359-
export HF_HUB_ENABLE_HF_TRANSFER=1
13601393
huggingface-cli download --local-dir ${nameWithoutNamespace(model.id)} ${model.id}`,
13611394
];
13621395

13631396
const mlxlm = (model: ModelData): string[] => [
13641397
`# Make sure mlx-lm is installed
1365-
pip install --upgrade mlx-lm
1398+
# pip install --upgrade mlx-lm
13661399
13671400
# Generate text with mlx-lm
13681401
from mlx_lm import load, generate
@@ -1375,7 +1408,7 @@ text = generate(model, tokenizer, prompt=prompt, verbose=True)`,
13751408

13761409
const mlxchat = (model: ModelData): string[] => [
13771410
`# Make sure mlx-lm is installed
1378-
pip install --upgrade mlx-lm
1411+
# pip install --upgrade mlx-lm
13791412
13801413
# Generate text with mlx-lm
13811414
from mlx_lm import load, generate
@@ -1392,7 +1425,9 @@ text = generate(model, tokenizer, prompt=prompt, verbose=True)`,
13921425
];
13931426

13941427
const mlxvlm = (model: ModelData): string[] => [
1395-
`Make sure mlx-vlm is installed
1428+
`# Make sure mlx-vlm is installed
1429+
# pip install --upgrade mlx-vlm
1430+
13961431
from mlx_vlm import load, generate
13971432
from mlx_vlm.prompt_utils import apply_chat_template
13981433
from mlx_vlm.utils import load_config

0 commit comments

Comments
 (0)