modelfusion 0.0.44 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -64
- package/package.json +4 -4
package/README.md
CHANGED
@@ -1,29 +1,33 @@
|
|
1
|
-
#
|
1
|
+
# ModelFusion
|
2
2
|
|
3
3
|
> ### Build AI applications, chatbots, and agents with JavaScript and TypeScript.
|
4
4
|
|
5
|
+
[](https://www.npmjs.com/package/modelfusion)
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
7
|
+
[](https://modelfusion.dev)
|
8
|
+
[](https://discord.gg/GqCwYZATem)
|
5
9
|
[](https://twitter.com/lgrammel)
|
6
|
-
[](https://www.npmjs.com/package/ai-utils.js)
|
7
|
-
[](https://opensource.org/licenses/MIT)
|
8
10
|
|
9
|
-
[Introduction](#introduction) | [Quick Install](#quick-install) | [Usage](#usage-examples) | [Features](#features) | [Integrations](#integrations) | [Documentation](#documentation) | [Examples](#more-examples) | [
|
11
|
+
[Introduction](#introduction) | [Quick Install](#quick-install) | [Usage](#usage-examples) | [Features](#features) | [Integrations](#integrations) | [Documentation](#documentation) | [Examples](#more-examples) | [modelfusion.dev](https://modelfusion.dev)
|
10
12
|
|
11
13
|
## Disclaimer
|
12
14
|
|
13
|
-
|
15
|
+
ModelFusion is in its initial development phase. Until version 1.0 there may be breaking changes.
|
14
16
|
|
15
17
|
## Introduction
|
16
18
|
|
17
|
-
|
19
|
+
ModelFusion is a library for building AI apps, chatbots, and agents. It provides abstractions for AI models, vector indices, and tools.
|
18
20
|
|
19
|
-
- **
|
20
|
-
- **Flexibility and control**: AI application development can be complex and unique to each project. With
|
21
|
-
- **
|
21
|
+
- **Type inference and validation**: ModelFusion uses TypeScript and [Zod](https://github.com/colinhacks/zod) to infer types wherever possible and to validate model responses.
|
22
|
+
- **Flexibility and control**: AI application development can be complex and unique to each project. With ModelFusion, you have complete control over the prompts and model settings, and you can access the raw responses from the models quickly to build what you need.
|
23
|
+
- **No chains and predefined prompts**: Use the concepts provided by JavaScript (variables, functions, etc.) and explicit prompts to build applications you can easily understand and control. Not black magic.
|
24
|
+
- **More than LLMs**: ModelFusion supports other models, e.g., text-to-image and voice-to-text, to help you build rich AI applications that go beyond just text.
|
25
|
+
- **Integrated support features**: Essential features like logging, retries, throttling, tracing, and error handling are built-in, helping you focus more on building your application.
|
22
26
|
|
23
27
|
## Quick Install
|
24
28
|
|
25
29
|
```sh
|
26
|
-
npm install
|
30
|
+
npm install modelfusion
|
27
31
|
```
|
28
32
|
|
29
33
|
You need to install `zod` and a matching version of `zod-to-json-schema` (peer dependencies):
|
@@ -34,13 +38,13 @@ npm install zod zod-to-json-schema
|
|
34
38
|
|
35
39
|
## Usage Examples
|
36
40
|
|
37
|
-
You can provide API keys for the different [integrations](https://
|
41
|
+
You can provide API keys for the different [integrations](https://modelfusion.dev/integration/model-provider/) using environment variables (e.g., `OPENAI_API_KEY`) or pass them into the model constructors as options.
|
38
42
|
|
39
|
-
### [Generate Text](https://
|
43
|
+
### [Generate Text](https://modelfusion.dev/guide/function/generate-text)
|
40
44
|
|
41
45
|
Generate text using a language model and a prompt.
|
42
46
|
You can stream the text if it is supported by the model.
|
43
|
-
You can use [prompt mappings](https://
|
47
|
+
You can use [prompt mappings](https://modelfusion.dev/guide/function/generate-text/prompt-mapping) to change the prompt format of a model.
|
44
48
|
|
45
49
|
#### generateText
|
46
50
|
|
@@ -69,7 +73,7 @@ for await (const textFragment of textStream) {
|
|
69
73
|
|
70
74
|
#### Prompt Mapping
|
71
75
|
|
72
|
-
[Prompt mapping](https://
|
76
|
+
[Prompt mapping](https://modelfusion.dev/guide/function/generate-text/prompt-mapping) lets you use higher level prompt structures (such as instruction or chat prompts) for different models.
|
73
77
|
|
74
78
|
```ts
|
75
79
|
const { text } = await generateText(
|
@@ -100,7 +104,7 @@ const { textStream } = await streamText(
|
|
100
104
|
|
101
105
|
#### Metadata and original responses
|
102
106
|
|
103
|
-
Most
|
107
|
+
Most ModelFusion model functions return rich results that include the original response and metadata.
|
104
108
|
|
105
109
|
```ts
|
106
110
|
const { text, response, metadata } = await generateText(
|
@@ -111,7 +115,7 @@ const { text, response, metadata } = await generateText(
|
|
111
115
|
);
|
112
116
|
```
|
113
117
|
|
114
|
-
### [Generate JSON](https://
|
118
|
+
### [Generate JSON](https://modelfusion.dev/guide/function/generate-json)
|
115
119
|
|
116
120
|
Generate JSON value that matches a schema.
|
117
121
|
|
@@ -144,7 +148,7 @@ const { value } = await generateJson(
|
|
144
148
|
);
|
145
149
|
```
|
146
150
|
|
147
|
-
### [Generate JSON or Text](https://
|
151
|
+
### [Generate JSON or Text](https://modelfusion.dev/guide/function/generate-json-or-text)
|
148
152
|
|
149
153
|
Generate JSON (or text as a fallback) using a prompt and multiple schemas.
|
150
154
|
It either matches one of the schemas or is text reponse.
|
@@ -175,7 +179,7 @@ const { schema, value, text } = await generateJsonOrText(
|
|
175
179
|
);
|
176
180
|
```
|
177
181
|
|
178
|
-
### [Tools](https://
|
182
|
+
### [Tools](https://modelfusion.dev/guide/tools)
|
179
183
|
|
180
184
|
Tools are functions that can be executed by an AI model. They are useful for building chatbots and agents.
|
181
185
|
|
@@ -240,7 +244,7 @@ const { tool, parameters, result, text } = await useToolOrGenerateText(
|
|
240
244
|
);
|
241
245
|
```
|
242
246
|
|
243
|
-
### [Transcribe Audio](https://
|
247
|
+
### [Transcribe Audio](https://modelfusion.dev/guide/function/transcribe-audio)
|
244
248
|
|
245
249
|
Turn audio (voice) into text.
|
246
250
|
|
@@ -254,7 +258,7 @@ const { transcription } = await transcribe(
|
|
254
258
|
);
|
255
259
|
```
|
256
260
|
|
257
|
-
### [Generate Image](https://
|
261
|
+
### [Generate Image](https://modelfusion.dev/guide/function/generate-image)
|
258
262
|
|
259
263
|
Generate a base64-encoded image from a prompt.
|
260
264
|
|
@@ -265,7 +269,7 @@ const { image } = await generateImage(
|
|
265
269
|
);
|
266
270
|
```
|
267
271
|
|
268
|
-
### [Embed Text](https://
|
272
|
+
### [Embed Text](https://modelfusion.dev/guide/function/embed-text)
|
269
273
|
|
270
274
|
Create embeddings for text. Embeddings are vectors that represent the meaning of the text.
|
271
275
|
|
@@ -279,7 +283,7 @@ const { embeddings } = await embedTexts(
|
|
279
283
|
);
|
280
284
|
```
|
281
285
|
|
282
|
-
### [Tokenize Text](https://
|
286
|
+
### [Tokenize Text](https://modelfusion.dev/guide/function/tokenize-text)
|
283
287
|
|
284
288
|
Split text into tokens and reconstruct the text from tokens.
|
285
289
|
|
@@ -295,7 +299,7 @@ const tokensAndTokenTexts = await tokenizer.tokenizeWithTexts(text);
|
|
295
299
|
const reconstructedText = await tokenizer.detokenize(tokens);
|
296
300
|
```
|
297
301
|
|
298
|
-
### [Upserting and Retrieving Text Chunks from Vector Indices](https://
|
302
|
+
### [Upserting and Retrieving Text Chunks from Vector Indices](https://modelfusion.dev/guide/text-chunks)
|
299
303
|
|
300
304
|
```ts
|
301
305
|
const texts = [
|
@@ -330,99 +334,99 @@ const { chunks } = await retrieveTextChunks(
|
|
330
334
|
|
331
335
|
## Features
|
332
336
|
|
333
|
-
- [Model Functions](https://
|
334
|
-
- [Generate and stream text](https://
|
335
|
-
- [Generate JSON](https://
|
336
|
-
- [Generate JSON or text](https://
|
337
|
-
- [Embed Text](https://
|
338
|
-
- [Tokenize Text](https://
|
339
|
-
- [Transcribe Audio](https://
|
340
|
-
- [Generate images](https://
|
337
|
+
- [Model Functions](https://modelfusion.dev/guide/function/)
|
338
|
+
- [Generate and stream text](https://modelfusion.dev/guide/function/generate-text)
|
339
|
+
- [Generate JSON](https://modelfusion.dev/guide/function/generate-json)
|
340
|
+
- [Generate JSON or text](https://modelfusion.dev/guide/function/generate-json-or-text)
|
341
|
+
- [Embed Text](https://modelfusion.dev/guide/function/embed-text)
|
342
|
+
- [Tokenize Text](https://modelfusion.dev/guide/function/tokenize-text)
|
343
|
+
- [Transcribe Audio](https://modelfusion.dev/guide/function/transcribe-audio)
|
344
|
+
- [Generate images](https://modelfusion.dev/guide/function/generate-image)
|
341
345
|
- Summarize text
|
342
346
|
- Split text
|
343
|
-
- [Tools](https://
|
344
|
-
- [Text Chunks](https://
|
345
|
-
- [Run abstraction](https://
|
346
|
-
- [Abort signals](https://
|
347
|
-
- [Cost calculation](https://
|
347
|
+
- [Tools](https://modelfusion.dev/guide/tools)
|
348
|
+
- [Text Chunks](https://modelfusion.dev/guide/text-chunks)
|
349
|
+
- [Run abstraction](https://modelfusion.dev/guide/run/)
|
350
|
+
- [Abort signals](https://modelfusion.dev/guide/run/abort)
|
351
|
+
- [Cost calculation](https://modelfusion.dev/guide/run/cost-calculation)
|
348
352
|
- Call recording
|
349
353
|
- Utilities
|
350
|
-
- [Retry strategies](https://
|
351
|
-
- [Throttling strategies](https://
|
354
|
+
- [Retry strategies](https://modelfusion.dev/guide/util/retry)
|
355
|
+
- [Throttling strategies](https://modelfusion.dev/guide/util/throttle)
|
352
356
|
- Error handling
|
353
357
|
|
354
358
|
## Integrations
|
355
359
|
|
356
360
|
### Model Providers
|
357
361
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
| Hosting
|
361
|
-
| [Generate text](https://
|
362
|
-
| [Stream text](https://
|
363
|
-
| [Generate JSON](https://
|
364
|
-
| [Generate JSON or Text](https://
|
365
|
-
| [Embed text](https://
|
366
|
-
| [Tokenize text](https://
|
367
|
-
| [Generate image](https://
|
368
|
-
| [Transcribe audio](https://
|
369
|
-
| [Cost calculation](https://
|
362
|
+
| | [OpenAI](https://modelfusion.dev/integration/model-provider/openai) | [Cohere](https://modelfusion.dev/integration/model-provider/cohere) | [Llama.cpp](https://modelfusion.dev/integration/model-provider/llamacpp) | [Hugging Face](https://modelfusion.dev/integration/model-provider/huggingface) | [Stability AI](https://modelfusion.dev/integration/model-provider/stability) | [Automatic1111](https://modelfusion.dev/integration/model-provider/automatic1111) |
|
363
|
+
| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
|
364
|
+
| Hosting | cloud | cloud | server (local) | cloud | cloud | server (local) |
|
365
|
+
| [Generate text](https://modelfusion.dev/guide/function/generate-text) | ✅ | ✅ | ✅ | ✅ | | |
|
366
|
+
| [Stream text](https://modelfusion.dev/guide/function/generate-text) | ✅ | ✅ | ✅ | | | |
|
367
|
+
| [Generate JSON](https://modelfusion.dev/guide/function/generate-json) | chat models | | | | | |
|
368
|
+
| [Generate JSON or Text](https://modelfusion.dev/guide/function/generate-json-or-text) | chat models | | | | | |
|
369
|
+
| [Embed text](https://modelfusion.dev/guide/function/embed-text) | ✅ | ✅ | ✅ | | | |
|
370
|
+
| [Tokenize text](https://modelfusion.dev/guide/function/tokenize-text) | full | full | basic | | | |
|
371
|
+
| [Generate image](https://modelfusion.dev/guide/function/generate-image) | ✅ | | | | ✅ | ✅ |
|
372
|
+
| [Transcribe audio](https://modelfusion.dev/guide/function/transcribe-audio) | ✅ | | | | | |
|
373
|
+
| [Cost calculation](https://modelfusion.dev/guide/run/cost-calculation) | ✅ | | | | | |
|
370
374
|
|
371
375
|
### Vector Indices
|
372
376
|
|
373
|
-
- [Memory](https://
|
374
|
-
- [Pinecone](https://
|
377
|
+
- [Memory](https://modelfusion.dev/integration/vector-index/memory)
|
378
|
+
- [Pinecone](https://modelfusion.dev/integration/vector-index/pinecone)
|
375
379
|
|
376
380
|
## Documentation
|
377
381
|
|
378
|
-
- [Guide](https://
|
379
|
-
- [Examples & Tutorials](https://
|
380
|
-
- [Integrations](https://
|
381
|
-
- [API Reference](https://
|
382
|
+
- [Guide](https://modelfusion.dev/guide)
|
383
|
+
- [Examples & Tutorials](https://modelfusion.dev/tutorial)
|
384
|
+
- [Integrations](https://modelfusion.dev/integration/model-provider)
|
385
|
+
- [API Reference](https://modelfusion.dev/api/modules)
|
382
386
|
|
383
387
|
## More Examples
|
384
388
|
|
385
|
-
### [Basic Examples](https://github.com/lgrammel/
|
389
|
+
### [Basic Examples](https://github.com/lgrammel/modelfusion/tree/main/examples/basic)
|
386
390
|
|
387
391
|
Examples for the individual functions and objects.
|
388
392
|
|
389
|
-
### [PDF to Tweet](https://github.com/lgrammel/
|
393
|
+
### [PDF to Tweet](https://github.com/lgrammel/modelfusion/tree/main/examples/pdf-to-tweet)
|
390
394
|
|
391
395
|
> _terminal app_, _PDF parsing_, _recursive information extraction_, _in memory vector index, \_style example retrieval_, _OpenAI GPT-4_, _cost calculation_
|
392
396
|
|
393
397
|
Extracts information about a topic from a PDF and writes a tweet in your own style about it.
|
394
398
|
|
395
|
-
### [AI Chat (Next.JS)](https://github.com/lgrammel/
|
399
|
+
### [AI Chat (Next.JS)](https://github.com/lgrammel/modelfusion/tree/main/examples/ai-chat-next-js)
|
396
400
|
|
397
401
|
> _Next.js app_, _OpenAI GPT-3.5-turbo_, _streaming_, _abort handling_
|
398
402
|
|
399
403
|
A basic web chat with an AI assistant, implemented as a Next.js app.
|
400
404
|
|
401
|
-
### [Image generator (Next.js)](https://github.com/lgrammel/
|
405
|
+
### [Image generator (Next.js)](https://github.com/lgrammel/modelfusion/tree/main/examples/image-generator-next-js)
|
402
406
|
|
403
407
|
> _Next.js app_, _Stability AI image generation_
|
404
408
|
|
405
409
|
Create an 19th century painting image for your input.
|
406
410
|
|
407
|
-
### [Voice recording and transcription (Next.js)](https://github.com/lgrammel/
|
411
|
+
### [Voice recording and transcription (Next.js)](https://github.com/lgrammel/modelfusion/tree/main/examples/voice-recording-next-js)
|
408
412
|
|
409
413
|
> _Next.js app_, _OpenAI Whisper_
|
410
414
|
|
411
415
|
Record audio with push-to-talk and transcribe it using Whisper, implemented as a Next.js app. The app shows a list of the transcriptions.
|
412
416
|
|
413
|
-
### [BabyAGI Classic](https://github.com/lgrammel/
|
417
|
+
### [BabyAGI Classic](https://github.com/lgrammel/modelfusion/tree/main/examples/baby-agi)
|
414
418
|
|
415
419
|
> _terminal app_, _agent_, _BabyAGI_, _OpenAI text-davinci-003_
|
416
420
|
|
417
421
|
TypeScript implementation of the classic [BabyAGI](https://github.com/yoheinakajima/babyagi/blob/main/classic/babyagi.py) by [@yoheinakajima](https://twitter.com/yoheinakajima) without embeddings.
|
418
422
|
|
419
|
-
### [Middle school math](https://github.com/lgrammel/
|
423
|
+
### [Middle school math](https://github.com/lgrammel/modelfusion/tree/main/examples/middle-school-math)
|
420
424
|
|
421
425
|
> _terminal app_, _agent_, _tools_, _GPT-4_
|
422
426
|
|
423
427
|
Small agent that solves middle school math problems. It uses a calculator tool to solve the problems.
|
424
428
|
|
425
|
-
### [Terminal Chat (llama.cpp)](https://github.com/lgrammel/
|
429
|
+
### [Terminal Chat (llama.cpp)](https://github.com/lgrammel/modelfusion/tree/main/examples/terminal-chat-llamacpp)
|
426
430
|
|
427
431
|
> _Terminal app_, _chat_, _llama.cpp_
|
428
432
|
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "modelfusion",
|
3
3
|
"description": "Build AI applications, chatbots, and agents with JavaScript and TypeScript.",
|
4
|
-
"version": "0.
|
4
|
+
"version": "0.1.1",
|
5
5
|
"author": "Lars Grammel",
|
6
6
|
"license": "MIT",
|
7
7
|
"keywords": [
|
@@ -17,13 +17,13 @@
|
|
17
17
|
"chatbot",
|
18
18
|
"ai"
|
19
19
|
],
|
20
|
-
"homepage": "https://
|
20
|
+
"homepage": "https://modelfusion.dev/",
|
21
21
|
"repository": {
|
22
22
|
"type": "git",
|
23
|
-
"url": "https://github.com/lgrammel/
|
23
|
+
"url": "https://github.com/lgrammel/modelfusion"
|
24
24
|
},
|
25
25
|
"bugs": {
|
26
|
-
"url": "https://github.com/lgrammel/
|
26
|
+
"url": "https://github.com/lgrammel/modelfusion/issues"
|
27
27
|
},
|
28
28
|
"type": "module",
|
29
29
|
"sideEffects": false,
|