|
28 | 28 |
|
29 | 29 | import uvicorn
|
30 | 30 |
|
| 31 | +from llama_cpp import __version__ |
31 | 32 | from llama_cpp.server.app import create_app
|
32 | 33 | from llama_cpp.server.settings import Settings, ServerSettings, set_settings
|
| 34 | +from llama_cpp.server.model import set_llama |
| 35 | +from llama_cpp.server.plugins import import_plugins |
33 | 36 |
|
34 | 37 | EXE_NAME = 'llama_server'
|
35 | 38 |
|
@@ -95,22 +98,27 @@ def main():
|
95 | 98 | type=parse_bool_arg,
|
96 | 99 | help=f"{description}",
|
97 | 100 | )
|
98 |
| - |
| 101 | + args = parser.parse_args() |
99 | 102 | try:
|
100 |
| - args = parser.parse_args() |
101 | 103 | server_settings = ServerSettings(**{k: v for k, v in vars(args).items() if v is not None})
|
102 | 104 | set_settings(server_settings)
|
103 | 105 | if server_settings.config and os.path.exists(server_settings.config):
|
104 | 106 | with open(server_settings.config, 'rb') as f:
|
105 | 107 | llama_settings = Settings.model_validate_json(f.read())
|
106 | 108 | else:
|
107 | 109 | llama_settings = Settings(**{k: v for k, v in vars(args).items() if v is not None})
|
108 |
| - app = create_app(settings=llama_settings) |
| 110 | + lifespan = "" if server_settings.plugins else None |
| 111 | + set_llama(llama_settings) |
| 112 | + app = create_app(title="🦙 llama.cpp Python API", version=__version__) |
109 | 113 | except Exception as e:
|
110 | 114 | print(e, file=sys.stderr)
|
111 | 115 | parser.print_help()
|
112 | 116 | sys.exit(1)
|
113 | 117 |
|
| 118 | + if server_settings.plugins and os.path.isdir(server_settings.plugins): |
| 119 | + for plugin in import_plugins(server_settings.plugins): |
| 120 | + app = plugin().init(app) |
| 121 | + |
114 | 122 | uvicorn.run(
|
115 | 123 | app, host=server_settings.host, port=server_settings.port
|
116 | 124 | )
|
|
0 commit comments