Coverage for aipyapp/cli/command/cmd_llm.py: 0%
30 statements
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-11 12:02 +0200
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-11 12:02 +0200
1from ... import T
2from .base import CommandMode, Completable
3from .base_parser import ParserCommand
4from .utils import print_records
6class LLMCommand(ParserCommand):
7 name = 'llm'
8 description = T('LLM operations')
9 modes = [CommandMode.MAIN, CommandMode.TASK]
11 def add_subcommands(self, subparsers):
12 use_parser = subparsers.add_parser('use', help=T('Use a LLM provider'))
13 use_parser.add_argument('provider', type=str, help=T('Provider name'))
14 subparsers.add_parser('list', help=T('List LLM providers'))
16 def get_arg_values(self, arg, subcommand=None, partial_value=''):
17 if subcommand == 'use' and arg.name == 'provider':
18 ctx = self.manager.context
19 return [Completable(client.name, str(client)) for client in ctx.tm.client_manager.clients.values()]
20 return super().get_arg_values(arg, subcommand)
22 def cmd_list(self, args, ctx):
23 rows = ctx.tm.list_llms()
24 print_records(rows)
26 def cmd_use(self, args, ctx):
27 if ctx.task:
28 ret = ctx.task.use(args.provider)
29 else:
30 ret = ctx.tm.use(llm=args.provider)
31 ctx.console.print(T('Success') if ret else T('Failed'), style='cyan' if ret else 'red')
32 if ret:
33 self.log.info(f'Use {args.provider} LLM provider')
34 return ret
36 def cmd(self, args, ctx):
37 self.cmd_list(args, ctx)