File size: 2,309 Bytes
1905805 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | '''
T2T Operations (at minimum) require the following fields for input chunks:
- system_prompt: (str) System prompt text
- user_prompt: (str) User prompt text
Adds to chunk:
- content: (str) Generated text
'''
from typing import Dict, List, Any, AsyncGenerator
from ..base import Operation
from utils.prompter.message import Message
class T2TOperation(Operation):
def __init__(self, op_id: str):
super().__init__("T2T", op_id)
## TO BE OVERRIDEN ####
async def start(self) -> None:
'''General setup needed to start generated'''
await super().start()
async def close(self) -> None:
'''Clean up resources before unloading'''
await super().close()
async def _parse_chunk(self, chunk_in: Dict[str, Any]) -> Dict[str, Any]:
'''Extract information from input for use in _generate'''
# assert "system_prompt" in chunk_in
# assert isinstance(chunk_in["system_prompt"], str)
# assert len(chunk_in["system_prompt"]) > 0
# assert "user_prompt" in chunk_in
# assert isinstance(chunk_in["user_prompt"], str)
# assert len(chunk_in["user_prompt"]) > 0
# return {
# "system_prompt": chunk_in["system_prompt"],
# "user_prompt": chunk_in["user_prompt"],
# }
assert "instruction_prompt" in chunk_in
assert isinstance(chunk_in["instruction_prompt"], str)
assert "messages" in chunk_in
assert isinstance(chunk_in["messages"], list)
return {
"instruction_prompt": chunk_in["instruction_prompt"],
"messages": chunk_in["messages"],
}
## TO BE IMPLEMENTED ####
async def configure(self, config_d: Dict[str, Any]):
'''Configure and validate operation-specific configuration'''
raise NotImplementedError
async def get_configuration(self) -> Dict[str, Any]:
'''Returns values of configurable fields'''
raise NotImplementedError
async def _generate(self, instruction_prompt: str = None, messages: list = None, **kwargs) -> AsyncGenerator[Dict[str, Any], None]:
'''Generate a output stream'''
raise NotImplementedError
yield {
"content": "example generated text"
} |