Spaces:
Runtime error
Runtime error
This example demonstrates how to build an agent that can integrate with [Text Generation Web UI](https://github.com/oobabooga/text-generation-webui). | |
To be able to perform successful connection, run text gen with '--api' and if you running text gen not on the same host, add '--listen'. see more option [here](https://github.com/oobabooga/text-generation-webui) | |
Check out the bare API usage [example](https://github.com/oobabooga/text-generation-webui/blob/main/api-examples/api-example.py). | |
## Tokenizer | |
To match the tokenizer used in the text gen, one can use [PreTrainedTokenizerFast](https://huggingface.co/docs/transformers/fast_tokenizers#loading-from-a-json-file) to load tokenizer from saved json setting file. | |
Example: | |
Let's say you using [TheBloke/WizardLM-13B-V1-1-SuperHOT-8K-GPTQ](https://huggingface.co/TheBloke/WizardLM-13B-V1-1-SuperHOT-8K-GPTQ/tree/main) in text gen, you can get hold of 'tokenizer.json' file that can be used to setup a corresponding tokenizer. | |
## Code Snippets | |
Code snippet using a pre defined 'preset'. | |
'max_tokens' argument here need to be set with the same value as in the preset in text gen. | |
```shell | |
from swarms.structures import Agent | |
from swarms.drivers import TextGenPromptDriver | |
from swarms.tokenizers import TextGenTokenizer | |
from transformers import PreTrainedTokenizerFast | |
fast_tokenizer = PreTrainedTokenizerFast(tokenizer_file="tokenizer.json") | |
prompt_driver = TextGenPromptDriver( | |
preset="swarms", | |
tokenizer=TextGenTokenizer(max_tokens=300, tokenizer=fast_tokenizer) | |
) | |
agent = Agent( | |
prompt_driver=prompt_driver | |
) | |
agent.run( | |
"tell me what Swarms is" | |
) | |
``` | |
Code snippet example using params, if params and preset is defined, preset will be used. | |
this params are overriding the current preset set in text gen, not all of them must be used. | |
```shell | |
from swarms.structures import Agent | |
from swarms.drivers import TextGenPromptDriver | |
from swarms.tokenizers import TextGenTokenizer | |
from transformers import PreTrainedTokenizerFast | |
params = { | |
'max_new_tokens': 250, | |
'do_sample': True, | |
'temperature': 0.7, | |
'top_p': 0.1, | |
'typical_p': 1, | |
'epsilon_cutoff': 0, # In units of 1e-4 | |
'eta_cutoff': 0, # In units of 1e-4 | |
'tfs': 1, | |
'top_a': 0, | |
'repetition_penalty': 1.18, | |
'repetition_penalty_range': 0, | |
'top_k': 40, | |
'min_length': 0, | |
'no_repeat_ngram_size': 0, | |
'num_beams': 1, | |
'penalty_alpha': 0, | |
'length_penalty': 1, | |
'early_stopping': False, | |
'mirostat_mode': 0, | |
'mirostat_tau': 5, | |
'mirostat_eta': 0.1, | |
'seed': 235245345, | |
'add_bos_token': True, | |
'truncation_length': 2048, | |
'ban_eos_token': False, | |
'skip_special_tokens': True, | |
'stopping_strings': [] | |
} | |
fast_tokenizer = PreTrainedTokenizerFast(tokenizer_file="tokenizer.json") | |
prompt_driver = TextGenPromptDriver( | |
params=params, | |
tokenizer=TextGenTokenizer(max_tokens=params['max_new_tokens'], tokenizer=fast_tokenizer) | |
) | |
agent = Agent( | |
prompt_driver=prompt_driver | |
) | |
agent.run( | |
"tell me what Swarms is" | |
) | |
``` |