-
Notifications
You must be signed in to change notification settings - Fork 80
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Gradio Local Editor cookbook --- Stack created with [Sapling](https://sapling-scm.com). Best reviewed with [ReviewStack](https://reviewstack.dev/lastmile-ai/aiconfig/pull/826). * __->__ #826 * #866 * #863
- Loading branch information
Showing
8 changed files
with
362 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
# Gradio Workbook Editor | ||
|
||
## Prompt IDE with LastMile AI | ||
|
||
This cookbook is meant to demonstrate the capabilities of the AI Workbook editor. It can run inference against locally hosted or remote models from many inference providers, including Hugging Face, OpenAI and others. | ||
|
||
It supports text, image and audio model formats, allowing you to easily chain them together in a single notebook session! | ||
|
||
With `aiconfig`, it lets you save the state in a single json config file which you can version control or share with others. | ||
|
||
In addition to editing the `*.aiconfig.json` file through the AI Workbook interface, you can also use the AIConfig SDK to use it in application code, providing a single interface to run inference across any model and modality (media formats). | ||
|
||
## Tech Stack | ||
|
||
What you see here is a "local editor" -- a React frontend and a Flask server which allow you to edit `.aiconfig.json` files in a notebook-like UI. | ||
|
||
- [React Frontend code](https://github.com/lastmile-ai/aiconfig/tree/main/python/src/aiconfig/editor/client) | ||
|
||
- [Backend server code](https://github.com/lastmile-ai/aiconfig/tree/main/python/src/aiconfig/editor/server) | ||
|
||
### Gradio custom component | ||
|
||
The Gradio custom component is currently WIP. | ||
|
||
**Note**: We already have the Gradio backend that corresponds to the Flask server in the [`gradio-workbook`](https://github.com/lastmile-ai/gradio-workbook) repo. | ||
|
||
We are working on using `sveltris` to package our React frontend to work with Gradio. Once that works, the same experience you see in this cookbook will be possible inside a Gradio custom component. | ||
|
||
## Getting Started | ||
|
||
**Instructions**: | ||
|
||
- Clone https://github.com/lastmile-ai/aiconfig | ||
- Go back to top-level directory: `cd <aiconfig>` | ||
|
||
- `cd <aiconfig>/cookbooks/Gradio` | ||
|
||
- `pip3 install -r requirements.txt` | ||
|
||
- Install `python-aiconfig-test` package from `test-pypi`: | ||
|
||
``` | ||
pip3 install --index-url https://test.pypi.org/simple --extra-index-url https://pypi.org/simple python-aiconfig-test==1.1.30 --force | ||
``` | ||
|
||
Now run this command to start the AIConfig editor: | ||
|
||
```bash | ||
aiconfig edit --aiconfig-path=huggingface.aiconfig.json --parsers-module-path=hf_model_parsers.py | ||
``` | ||
|
||
## TODO | ||
|
||
- Publish new version of aiconfig_extension_hugging_face package | ||
- Update huggingface.aiconfig.json with clean examples | ||
- Add video demo |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
from aiconfig_extension_hugging_face import ( | ||
HuggingFaceAutomaticSpeechRecognitionTransformer, | ||
HuggingFaceImage2TextTransformer, | ||
HuggingFaceTextSummarizationTransformer, | ||
HuggingFaceText2ImageDiffusor, | ||
HuggingFaceText2SpeechTransformer, | ||
HuggingFaceTextGenerationTransformer, | ||
HuggingFaceTextTranslationTransformer, | ||
) | ||
|
||
from aiconfig import AIConfigRuntime | ||
|
||
|
||
def register_model_parsers() -> None: | ||
"""Register model parsers for HuggingFace models.""" | ||
automatic_speech_recognition = HuggingFaceAutomaticSpeechRecognitionTransformer() | ||
AIConfigRuntime.register_model_parser(automatic_speech_recognition, automatic_speech_recognition.id()) | ||
|
||
image_to_text = HuggingFaceImage2TextTransformer() | ||
AIConfigRuntime.register_model_parser(image_to_text, image_to_text.id()) | ||
|
||
text_to_image = HuggingFaceText2ImageDiffusor() | ||
AIConfigRuntime.register_model_parser(text_to_image, text_to_image.id()) | ||
|
||
text_to_speech = HuggingFaceText2SpeechTransformer() | ||
AIConfigRuntime.register_model_parser(text_to_speech, text_to_speech.id()) | ||
|
||
text_generation = HuggingFaceTextGenerationTransformer() | ||
AIConfigRuntime.register_model_parser(text_generation, text_generation.id()) | ||
text_summarization = HuggingFaceTextSummarizationTransformer() | ||
AIConfigRuntime.register_model_parser(text_summarization, text_summarization.id()) | ||
text_translation = HuggingFaceTextTranslationTransformer() | ||
AIConfigRuntime.register_model_parser(text_translation, text_translation.id()) |
Binary file not shown.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# AIConfig | ||
python-aiconfig | ||
|
||
# Hugging Face Extension for AIConfig | ||
aiconfig-extension-hugging-face >= 0.0.2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
{ | ||
"name": "NYC Trip Planner", | ||
"schema_version": "latest", | ||
"metadata": { | ||
"parameters": { | ||
"": "" | ||
}, | ||
"models": { | ||
"gpt-3.5-turbo": { | ||
"model": "gpt-3.5-turbo", | ||
"top_p": 1, | ||
"temperature": 1 | ||
}, | ||
"gpt-4": { | ||
"model": "gpt-4", | ||
"max_tokens": 3000, | ||
"system_prompt": "You are an expert travel coordinator with exquisite taste." | ||
} | ||
}, | ||
"default_model": "gpt-3.5-turbo" | ||
}, | ||
"description": "Intrepid explorer with ChatGPT and AIConfig", | ||
"prompts": [ | ||
{ | ||
"name": "get_activities", | ||
"input": "Tell me 10 fun attractions to do in NYC." | ||
}, | ||
{ | ||
"name": "gen_itinerary", | ||
"input": "Generate an itinerary ordered by {{order_by}} for these activities: {{get_activities.output}}.", | ||
"metadata": { | ||
"model": "gpt-4", | ||
"parameters": { | ||
"order_by": "geographic location" | ||
} | ||
} | ||
} | ||
], | ||
"$schema": "https://json.schemastore.org/aiconfig-1.0" | ||
} |