vllm_args.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package llm
  2. import (
  3. "fmt"
  4. "strings"
  5. api "yunion.io/x/onecloud/pkg/apis/llm"
  6. )
  7. func parseVLLMCustomizedArgs(items []string) ([]*api.VllmCustomizedArg, error) {
  8. if len(items) == 0 {
  9. return nil, nil
  10. }
  11. out := make([]*api.VllmCustomizedArg, 0, len(items))
  12. for _, item := range items {
  13. idx := strings.Index(item, "=")
  14. if idx <= 0 {
  15. return nil, fmt.Errorf("invalid vllm arg %q, expected key=value", item)
  16. }
  17. key := strings.TrimSpace(item[:idx])
  18. if key == "" {
  19. return nil, fmt.Errorf("invalid vllm arg %q, empty key", item)
  20. }
  21. out = append(out, &api.VllmCustomizedArg{
  22. Key: key,
  23. Value: item[idx+1:],
  24. })
  25. }
  26. return out, nil
  27. }
  28. func newVLLMSpecFromArgs(preferredModel string, items []string) (*api.LLMSpecVllm, error) {
  29. customizedArgs, err := parseVLLMCustomizedArgs(items)
  30. if err != nil {
  31. return nil, err
  32. }
  33. if preferredModel == "" && len(customizedArgs) == 0 {
  34. return nil, nil
  35. }
  36. return &api.LLMSpecVllm{
  37. PreferredModel: preferredModel,
  38. CustomizedArgs: customizedArgs,
  39. }, nil
  40. }