Core¶
Introduction¶
Core components. Most notably ALM which is the Class from which all models derive. All functions that are common amongst models are here.
ALM DIY¶
Override
build_prompt and at least one of
create_native_generator create_native_completion. Implementing create_native_generator but not
create_native_completion will not lead to automatic availability of the latter.
Ideally you also override
detokenize tokenize tokenize_as_str get_n_tokens
The easiest example of all this, is the OpenAI class.
Documentation¶
- class pyalm.internal.alm.ALM(model_path_or_name, verbose=0, enable_functions=False)¶
 Base class. Don’t instantiate on its own
- add_tracker_entry(*args, **kwargs)¶
 Add a new entry to the tracker. More info is in https://github.com/finnschwall/PyALM/blob/main/format_specifications.md
- adopt_from_alm(other: Type[ALM])¶
 Copy state from other ALM into this. This is not a deep copy!
- Parameters:
 other – Other ALM
- autoconverse(interactions=3)¶
 
- available_functions¶
 Function names and the callable functions available for the model
- abstract build_prompt(preserve_flow=False)¶
 Build prompt in format native to library
- Parameters:
 preserve_flow – Block suffix for purely text based models
- Returns:
 prompt obj
- build_prompt_as_str(new_lines_per_role=1, new_lines_afer_role=0, block_gen_prefix=False, raw=False, include_system_msg=True, use_build_prompt=False)¶
 Build a prompt in string form :param new_lines_per_role: Newlines after Role+message :param new_lines_afer_role: Newlines after role :param block_gen_prefix: Whether to add generation prefix. Normally this leads a prompt to end with e.g. Assistant: so that the model does not continue to write as a user. :param raw: If true don’t resolve symbols :return: str
- code_callback¶
 Function that will be called to execute code
- create_completion(text_obj=None, verbose=None, enable_function_calls=None, chat=True, token_prob_delta=None, token_prob_abs=None, handle_functions=None, stop=None, **kwargs)¶
 Create completion with automatic prompt building, function calling etc.
- Parameters:
 text – Prompt or prompt obj
max_tokens – maximum tokens generated in completion
stop – Additional stop sequences
chat – Only applicable for pure text models. Will pass just text to model without building a history.
keep_dict – If library or API returns something else than raw tokens, whether to return native format
token_prob_delta – dict, relative added number for token logits
token_prob_abs – dict, Absolute logits for tokens
log_probs – int, when not None return the top X log probs and their tokens
handle_functions – Whether to call functions or return list with attemptedcalls
kwargs – kwargs
- Returns:
 completion
- create_completion_plugin(conv_tracker=None, context=None, func_list=None, system_msg=None, code_calls=0, chat_store_loc=None, username=None, temp=None, metadata=None)¶
 
- create_generator(text_obj=None, verbose=None, enable_function_calls=None, chat=True, token_prob_delta=None, token_prob_abs=None, handle_functions=True, stop=None, **kwargs)¶
 Streaming version of create_generator. Returns generator with automatic prompt building, function calling etc.
- Parameters:
 text – Prompt or prompt obj
max_tokens – maximum tokens generated in completion
stop – Additional stop sequences
chat – Only applicable for pure text models. Will pass just text to model without building a history.
keep_dict – If library or API returns something else than raw tokens, whether to return native format
token_prob_delta – dict, relative added number for token logits
token_prob_abs – dict, Absolute logits for tokens
log_probs – int, when not None return the top X log probs and their tokens
handle_functions – Whether to call functions or return list with attemptedcalls
kwargs – kwargs
- Returns:
 completion
- abstract create_native_completion(text, max_tokens=256, stop=None, keep_dict=False, token_prob_delta=None, token_prob_abs=None, log_probs=None, **kwargs)¶
 Library native completion retriever. Different for each library. No processing of output is done
- Parameters:
 text – Prompt or prompt obj
max_tokens – maximum tokens generated in completion
stop – Additional stop sequences
keep_dict – If library or API returns something else than raw tokens, whether to return native format
token_prob_delta – dict, relative added number for token logits
token_prob_abs – dict, Absolute logits for tokens
log_probs – int, when not None return the top X log probs and their tokens
kwargs – kwargs
- Returns:
 completion
- abstract create_native_generator(text, keep_dict=False, token_prob_delta=None, token_prob_abs=None, **kwargs)¶
 Library native generator for tokens. Different for each library. No processing of output is done
- Parameters:
 text – Prompt or prompt obj
keep_dict – If library or API returns something else than raw tokens, whether to return native format
token_prob_delta – dict, Absolute logits for tokens
token_prob_abs – dict, relative added number for token logits
kwargs – kwargs
- Returns:
 generator
- enable_automatic_function_calls()¶
 
- abstract get_n_tokens(text)¶
 How many tokens are in a string
- Parameters:
 text – tokenizable text
- Returns:
 amount
- init_gui(num_messages_included=4, monkeypatch=True)¶
 
- load_history(path_or_text, is_file=True)¶
 Loads a conversation history
- Parameters:
 path_or_text – Either path to a file or a yaml like string
- pop_entry()¶
 Remove last element from conversation tracker. Automatically takes care of e.g. split messages due to function calls. :return: The popped entry
- property preserved_sequences¶
 
- replace_symbols(text, entry=None, additional_symbols=None)¶
 Replace symbols in a conv history entry or text
- Parameters:
 text – text with symbols in it
entry – optional, conv history entry to use for replacement
temp_symbols – additional symbols to be replaced
- Returns:
 text with substitutions
- reset_tracker(purge=False)¶
 Remove all tracker entries
- Parameters:
 purge – Complete reset including e.g. system message
- save_history(path=None)¶
 Saves the ALMs conversation history
- Parameters:
 path – Where to save. If not specified string is returned
- Returns:
 None or history as yaml like string
- save_state(path=None)¶
 Saves the ALMs entire state (excluding the model itself)
- Parameters:
 path – Where to save. If not specified string is returned
- Returns:
 None or state as yaml
- set_system_message(msg='', prepend_function_support=False)¶
 Change the system message
- Parameters:
 msg – new message
prepend_function_support – Automatically change message to include function calling
- property symbols¶
 
- property system_msg¶
 
- abstract tokenize(text)¶
 Text to token as vector representation
- Parameters:
 text –
- Returns:
 List of tokens as ints
- abstract tokenize_as_str(text)¶
 Text to token as vector representation but each token is converted to string
- Parameters:
 text –
- Returns:
 List of tokens as strings
- update_gui()¶
 
- user_symbols¶
 Variable symbols that will get replaced when building prompt. Either string or function pointer
- property verbose¶
 
- class pyalm.internal.alm.FunctionFormat(value)¶
 An enumeration.
- JSON = 'JSON'¶
 
- MODEL_SPECIFIC = 'MODEL_SPECIFIC'¶
 
- PYDOC = 'PYDOC'¶
 
- class pyalm.internal.alm.ParseStatus(value)¶
 Used to classify outcomes when trying to handle LLMs function call
- NO_FUNC_SEQUENCE_FOUND = 'NO_FUNC_SEQUENCE_FOUND'¶
 
- PARSED_DICT_RETURN = 'PARSED_DICT_RETURN'¶
 
- PARSED_EXECUTED_ERR = 'PARSED_EXECUTED_ERR'¶
 
- PARSED_EXECUTED_OK = 'PARSED_EXECUTED_OK'¶
 
- UNDEFINED = 'UNDEFINED'¶
 
- UNPARSEABLE_FUNC_FOUND = 'UNPARSEABLE_FUNC_FOUND'¶
 
- class pyalm.internal.alm.Symbols¶
 
- pyalm.internal.alm.change_latex_delimiters(latex_str)¶