openai/openai-python
Publicmirrored from https://github.com/openai/openai-pythonAvailable
openai/_openai_scripts.py
74lines · modecode
| 1 | #!/usr/bin/env python |
| 2 | import argparse |
| 3 | import logging |
| 4 | import sys |
| 5 | |
| 6 | import openai |
| 7 | from openai.cli import api_register, display_error, tools_register, wandb_register |
| 8 | |
| 9 | logger = logging.getLogger() |
| 10 | formatter = logging.Formatter("[%(asctime)s] %(message)s") |
| 11 | handler = logging.StreamHandler(sys.stderr) |
| 12 | handler.setFormatter(formatter) |
| 13 | logger.addHandler(handler) |
| 14 | |
| 15 | |
| 16 | def main(): |
| 17 | parser = argparse.ArgumentParser(description=None) |
| 18 | parser.add_argument( |
| 19 | "-v", |
| 20 | "--verbose", |
| 21 | action="count", |
| 22 | dest="verbosity", |
| 23 | default=0, |
| 24 | help="Set verbosity.", |
| 25 | ) |
| 26 | parser.add_argument("-b", "--api-base", help="What API base url to use.") |
| 27 | parser.add_argument("-k", "--api-key", help="What API key to use.") |
| 28 | parser.add_argument( |
| 29 | "-o", |
| 30 | "--organization", |
| 31 | help="Which organization to run as (will use your default organization if not specified)", |
| 32 | ) |
| 33 | |
| 34 | def help(args): |
| 35 | parser.print_help() |
| 36 | |
| 37 | parser.set_defaults(func=help) |
| 38 | |
| 39 | subparsers = parser.add_subparsers() |
| 40 | sub_api = subparsers.add_parser("api", help="Direct API calls") |
| 41 | sub_tools = subparsers.add_parser("tools", help="Client side tools for convenience") |
| 42 | sub_wandb = subparsers.add_parser("wandb", help="Logging with Weights & Biases") |
| 43 | |
| 44 | api_register(sub_api) |
| 45 | tools_register(sub_tools) |
| 46 | wandb_register(sub_wandb) |
| 47 | |
| 48 | args = parser.parse_args() |
| 49 | if args.verbosity == 1: |
| 50 | logger.setLevel(logging.INFO) |
| 51 | elif args.verbosity >= 2: |
| 52 | logger.setLevel(logging.DEBUG) |
| 53 | |
| 54 | openai.debug = True |
| 55 | if args.api_key is not None: |
| 56 | openai.api_key = args.api_key |
| 57 | if args.api_base is not None: |
| 58 | openai.api_base = args.api_base |
| 59 | if args.organization is not None: |
| 60 | openai.organization = args.organization |
| 61 | |
| 62 | try: |
| 63 | args.func(args) |
| 64 | except openai.error.OpenAIError as e: |
| 65 | display_error(e) |
| 66 | return 1 |
| 67 | except KeyboardInterrupt: |
| 68 | sys.stderr.write("\n") |
| 69 | return 1 |
| 70 | return 0 |
| 71 | |
| 72 | |
| 73 | if __name__ == "__main__": |
| 74 | sys.exit(main()) |
| 75 | |