File: from .lm.gradio import gradio from .lm.openai import openai from .log.jsonfiles import jsonfiles from .log.arweaveditems import arweaveditems import argparse import asyncio import datetime import json import logging import os import sys async def amain(): timestamp = datetime.datetime.now().isoformat() parser = argparse.ArgumentParser() parser.add_argument('-o', '--output', type=argparse.FileType('w'), default=sys.stdout, help='Output file') parser.add_argument('input_data', nargs='*', help='Input data or filename') args = parser.parse_args() input_data = [] logger = logging.getLogger(__name__) for item in args.input_data: if os.path.exists(item): logger.warn(f'Reading content from file "{item}"') with open(item, 'r') as f: if input_data: input_data[-1] = '\n' input_data.extend((f.read(), '\n')) else: input_data.extend((item, ' ')) if input_data: input_data.pop() # trailing whitespace input_data = ''.join(input_data) else: input_data = sys.stdin.read() api = openai(model = 'gpt-4') #api = gradio() log = jsonfiles(prefix = 'gpt4-') log2 = arweaveditems() async with api, log, log2: response = await api(input_data) for addr in await asyncio.gather( log( time = timestamp, **api.metadata, input = input_data, output = response, ), log2( time = timestamp, **api.metadata, input = input_data, output = response, ) ): logger.warn(addr) args.output.write(response) def main(): asyncio.run(amain()) if __name__ == "__main__": main() Severely corrupt unified diff: diff --git a/lm/__main__.py b/lm/__main__.py --- a/lm/__main__.py +++ b/lm/__main__.py @@ -1,4 +1,4 @@ -from .lm.spellbook import spellbook +from .lm import spellbook, openai, gradio from .log.jsonfiles import jsonfiles from .log.arweaveditems import arweaveditems @@ -9,6 +9,12 @@ import sys async def amain(): timestamp = datetime.datetime.now().isoformat() parser = argparse.ArgumentParser() + parser.add_argument('--lm', choices=['spellbook', 'openai', 'gradio'], default='spellbook', help='Language model to use') + parser.add_argument('--log', choices=['jsonfiles', 'arweaveditems'], default='jsonfiles', help='Logging method to use') parser.add_argument('-o', '--output', type=argparse.FileType('w'), default=sys.stdout, help='Output file') parser.add_argument('input_data', nargs='*', help='Input data or filename') args = parser.parse_args() @@ -36,8 +42,12 @@ async def amain(): else: input_data = sys.stdin.read() - api = spellbook() - log = jsonfiles(prefix = 'gpt4-') + api = { + 'spellbook': spellbook, + 'openai': openai, + 'gradio': gradio, + }[args.lm]() + log = {'jsonfiles': jsonfiles, 'arweaveditems': arweaveditems}[args.log](prefix='gpt4-') log2 = arweaveditems() async with api, log, log2: Pristine corruption-free unified diff: