Skip to content
This repository was archived by the owner on Sep 30, 2024. It is now read-only.

site config: minor fixes, make modelConfiguration enable new backend models API, initial self-hosted model config#63697

Merged
emidoots merged 6 commits into
mainfrom
sg/configwork
Jul 8, 2024
Merged

site config: minor fixes, make modelConfiguration enable new backend models API, initial self-hosted model config#63697
emidoots merged 6 commits into
mainfrom
sg/configwork

Conversation

@emidoots

@emidoots emidoots commented Jul 8, 2024

Copy link
Copy Markdown
Member

These commits do a few things:


46b1303e62ea7e01ba6a441cc55bbe4c166ef5ce corrects a few minor mistakes with the new site config which I introduced in #63654 - namely fixing examples entries and nullability in a few cases. Nothing controversial here, just bug fixes.


750b61e7dfa661338c9b40042087aed8e795f900 makes it so that the /.api/client-config endpoint returns "modelsAPIEnabled": true, if "modelConfiguration" is set in the site config. For context, "modelConfiguration" is a new site config field, which is not used anywhere before this PR, and has this description:

BETA FEATURE, only enable if you know what you are doing. If set, Cody will use the new model configuration system and ignore the old 'completions' site configuration entirely.

I will send a change to the client logic next so that it uses this modelsAPIEnabled field instead of the client-side feature flag dev.useServerDefinedModels.


Finally, f52fba342dd2e62a606b885802f7f6bc37f4f4ac and bde67d57c39f4566dc9287f8793cb5ffd25955b3 make a few site config changes that @chrsmith and I discussed to enable Self-hosted models support. Specifically, it makes it possible to specify the following configuration in the site config:

  // Setting this field means we are opting into the new Cody model configuration system which is in beta.
  "modelConfiguration": {
    // Disable use of Sourcegraph's servers for model discovery
    "sourcegraph": null,

    // Configure the OpenAI-compatible API endpoints that Cody should use to provide
    // mistral and bigcode (starcoder) models.
    "providerOverrides": [
      {
        "displayName": "Mistral",
        "id": "mistral",
        "serverSideConfig": {
          "type": "openaicompatible",
          "endpoint": "...",
          "accessToken": "...",
        },
      },
      {
        "displayName": "Bigcode",
        "id": "bigcode",
        "serverSideConfig": {
          "type": "openaicompatible",
          "endpoint": "...",
          "accessToken": "...",
        },
      },
    ],

    // Configure which exact mistral and starcoder models we want available
    "modelOverridesRecommendedSettings": [
      "bigcode::v1::starcoder2-7b",
      "mistral::v1::mixtral-8x7b-instruct"
    ],

    // Configure which models Cody will use by default
    "defaultModels": {
      "chat": "mistral::v1::mixtral-8x7b-instruct",
      "fastChat": "mistral::v1::mixtral-8x7b-instruct",
      "codeCompletion": "bigcode::v1::starcoder2-7b",
    }
  }

Currently this site config is not actually used, so configuring Sourcegraph like this should not be done today, but this will be in a future PR by me.

@chrsmith one divergence from what we discussed.. me and you had planned to support this:

        "modelOverrides": [
            {
                "bigcode::v1::starcoder2-7b"": {
                    "useRecommendSettings": true,
                },
                "mistral::v1::mixtral-8x22b-instruct": {
                    "useRecommendSettings": true,
                },
             }
        ],

However, being able to specify "useRecommendSettings": true, inside of a ModelOverride in the site configuration means that all other ModelOverride fields (the ones we are accepting as recommended settings) must be optional, which seems quite bad and opens up a number of misconfiguration possibilities.

Instead, I opted to introduce a new top-level field for model overrides with recommended settings, so the above becomes this instead:

    "modelOverridesRecommendedSettings": [
      "bigcode::v1::starcoder2-7b",
      "mistral::v1::mixtral-8x7b-instruct"
    ],

This has the added benefit of making it impossible to set both "useRecommendSettings": true, and other fields.

I will make it a site config error (prevents admins from saving configuration) to specify the same model in both modelOverrides and modelOverridesRecommendedSettings in a future PR.


Test plan

Doesn't affect users yet. Careful review.

Changelog

N/A

Stephen Gutekanst added 4 commits July 8, 2024 14:39
Signed-off-by: Stephen Gutekanst <stephen@sourcegraph.com>
Signed-off-by: Stephen Gutekanst <stephen@sourcegraph.com>
Signed-off-by: Stephen Gutekanst <stephen@sourcegraph.com>
Signed-off-by: Stephen Gutekanst <stephen@sourcegraph.com>

@jamesmcnamara jamesmcnamara left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The configuration detailed here is from a site admin perspective right? It doesn't impact the format of the API message sent to the Cody client

@emidoots

emidoots commented Jul 8, 2024

Copy link
Copy Markdown
Member Author

The configuration detailed here is from a site admin perspective right? It doesn't impact the format of the API message sent to the Cody client

Correct

Signed-off-by: Stephen Gutekanst <stephen@sourcegraph.com>
In JSON schema, there may be `"type": "object",` where the type is a
single string, but there may also be e.g. `"type": ["object", "null"],`
where it may be multiple types.

Signed-off-by: Stephen Gutekanst <stephen@sourcegraph.com>
@emidoots

emidoots commented Jul 8, 2024

Copy link
Copy Markdown
Member Author

Merging to unblock myself, will follow up on any thoughts you have after the fact @chrsmith

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants