I've messed up my Cursor

  • Cursor 0.26.2
  • Mac Mini M1
  • macOS 13.6 Ventura

I was experimenting with the Llama Coder LLMs last night and some how I seem to have gotten my Cursor linked to an unwanted model, namely the codellama:7b-code-q4_K_M - I actually meant to download the codellama:7b-code-q6_K model, but I digress! This the state of my Cursor atm, any chats are met with an error and it shows that the incorrect model is being used, even though I have removed it from Ollama

I’ve searched through the settings on Cursor but I cannot find where the LLM is set.

Any clues, anyone?

Okay! I didn’t realise that Cursor has it’s own settings page. I’ve managed to add a reference to the default Llama Coder model stable-code:3b-code-q4_0 and I put in my Open API key. When I hit the arrow to process the entered key, this came up…

SCR-20240215-tqev

I’m currently paying $192 per year for the Cursor Pro sub, and would like to move to a free model such as Llama Coder but Cursor is telling me otherwise!

What am I missing here?

hi hihi! a bit confused but as I understand there are a few things:

  1. you change the model by clicking the dropdown in the inputbox, or by using cmd+/

  2. if you use a non cursor model (gpt-4/cursor-fast/gpt-3.5) that we guarantee support for/maintain, you have to change the url provider in the settings for cursor (i.e. the area where you enter your api key in the box you screenshotted in the second thing.)

Thanks for the reply. Presumably you mean this input…

What should I put in there for a model downloaded to my local machine using ollama run <model name>?

And, shouldn’t the docs at Your own OpenAI API Key - Cursor mention this?

I believe this url answers that question: https://ollama.com/blog/openai-compatibility:

http://localhost:11434/v1

Thanks! I’ve changed the URL but the import of the API key is still failing…

I tried the curl command in the console and it just came up with a 404. I suspect it’s not after my Open API Key here…

Try removing the trailing “/” to make it http://localhost:11434/v1

I tried what you suggested: http://localhost:11434/v1. The only double “/” is part of the “http://” syntax, and I did not put a trailing “/”.

What do you see now in the error region. Was basing my previous suggestion off of this:

And if you do the curl request again, is it a 404?

Interesting! I’ve just tried this and after a couple of minutes, this came back…

This is with the models setup like this…

SCR-20240218-jswz

However, within Curser, both standard and nightly, any attempt to chat is still being met with…

SCR-20240218-jtsh

Oh! Apologies, by the way, I’ve been testing with both standard and nightly. I’ve just noticed that I had the base url with a trailing “/” in nightly and not in standard, hence my confusion!

Could you send the request id for the next time this fails? Also, try entering anything in the “enter openai api key” section and press the right arrow - then see what it says.

I’ve just tried it again…

That’s with the URL set to http://localhost:11434/v1

I pasted the script to my terminal, and, after 3 minutes and 6 seconds, it returned this…

curl http://localhost:11434/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer x" -d '{
  "messages": [
    {
      "role": "system",
      "content": "You are a test assistant."
    },
    {
      "role": "user",
      "content": "Testing. Just say hi and nothing else."
    }
  ],
  "model": "stable-code:3b-code-q4_0"
}'
{"id":"chatcmpl-185","object":"chat.completion","created":1708384013,"model":"stable-code:3b-code-q4_0","system_fingerprint":"fp_ollama","choices":[{"index":0,"message":{"role":"assistant","content":"\n    - ``/h` : Get a random hello message.\n    - `*`: Repeats the rest of the string after it, then repeats the whole thing again from beginning to end (which makes this an infinite loop). This command is useful for testing if your bot responds correctly at certain points in time. You can use this as a trigger to perform a specific action on some event that you care about (for example: \"When my bot starts running, I want it to print out 'Hello!'.\")).\n    - ``/t` : Get the current timestamp stringified for now (easiest way to get the current time stamp in a certain format). You can specify any format string supported by Python's `strftime()` function.\n  \"\"\"\n\n  return \"\"\"Welcome {0}!{1}\"\"\".format(username, \"\\n\" * number_of_lines))\n\n\n\nimport discord\nfrom discord.ext import commands\n\n\nclass HelpCommandEmbeddedChannelForGuild(commands.HelpCommand):\n    async def send_bot_help(self, mapping: dict):\n        embed = discord.Embed(color=0x3498DB) # Blue color (can be changed by users later).)\n        description = \"\"\"\n        Hi! {user} here to help you understand how all this works and what I am going for with my bot...\n\n        **How do these commands work?** Well, when a user sends a message in your server (a place where you can make new channels like chat rooms etc.), the message sent by that user is basically just a text file with some fancy formatting options added to it so it looks pretty and good looking when people see this cool bot of yours...\n\n        **Well but if someone types out an entire sentence without even thinking about how they are going to write their message (I mean, there might be a few words that come off naturally in the conversation like \"Oh! So I can actually send messages with these commands now!\")... **there is one simple trick that you could do with your bot so that it would then work pretty seamlessly without any of this awkward and weird stuff happening when people try to use these new cool commands added by your bot...\n\n        **Well, basically if someone types out an entire sentence (or whatever they want the message sent by their friend in a chat room etc. to say)... **then you can actually go ahead and add some new cool features right away without having to worry about it later on when people start using these brand spanking new exciting shiny awesome awesome-nessful new fresh exciting cool bot of yours...\n\n        **Well, if they just type out an entire sentence (or whatever they want the message sent by their friend in a chat room etc. to say)... **then you can actually go ahead and add some extra new features right away without having to worry about it later on when people start using your brand spanking fresh shiny awesome cool bot of yours...\n\n        **Well, if they just type out an entire sentence (or whatever they want the message sent by their friend in a chat room etc. to say)... **then you can actually go ahead and add some extra new features right away without having to worry about it later on when people start using your brand spanking fresh shiny awesome cool bot of yours...\n\n        **Well, if they just type out an entire sentence (or whatever they want the message sent by their friend in a chat room etc. to say)... **then you can actually go ahead and add some extra new features right away without having to worry about it later on when people start using your brand spanking fresh shiny awesome cool bot of yours...\n\n        **Well, if they just type out an entire sentence (or whatever they want the message sent by their friend in a chat room etc. to say)... **then you can actually go ahead and add some extra new features right away without having to worry about it later on when people start using your brand spanking fresh shiny awesome cool bot of yours...\n\n        **Well, if they just type out an entire sentence (or whatever they want the message sent by their friend in a chat room etc. to say)... **then you can actually go ahead and add some extra new features right away without having to worry about it later on when people start using your brand spanking fresh shiny awesome cool bot of yours...\n\n        **Well, if they just type out an entire sentence (or whatever they want the message sent by their friend in a chat room etc. to say)... **then you can actually go ahead and add some extra new features right away without having to worry about it later on when people start using your brand spanking fresh shiny awesome cool bot of yours...\n\n        **Well, if they just type out an entire sentence (or whatever they want the message sent by their friend in a chat room etc. to say)... **then you can actually go ahead and add some extra new features right away without having to worry about it later on when people start using your brand spanking fresh shiny awesome cool bot of yours...\n\n        **Well, if they just type out an entire sentence (or whatever they want the message sent by their friend in a chat room etc. to say)... **then you can actually go ahead and add some extra new features right away without having to worry about it later on when people start using your brand spanking fresh shiny awesome cool bot of yours...\n\"\"\".format(user=self.bot.mention)))\n\n  @commands.command()\n  async def gethelpcmd(ctx, command_name):\n\n    \"\"\"Command for getting a help message that helps to understand what the commands are supposed to be doing and how they work exactly in general when trying to use these new cool brand spanking fresh shiny awesome amazing useful exciting super cool bot of yours...\n\n    **Usage:** ``\u003cprefix\u003e\u003ccommand_without_the_bot_in_front_of_it\u003e``.\n    - **Description:** This command will basically get a help message that helps to understand what the commands are supposed to be doing and how they work exactly in general when trying to use these new cool brand spanking fresh shiny awesome amazing useful exciting exciting super cool bot of yours...\n\n    **Aliases:** ``\u003calias_1\u003e``, ``\u003calias_2\u003e``.\n    - **Example usage 1**: This help message is supposed to be used like this: ``{prefix}{command} {argument_name}`` (the spaces inside these curly braces can just as well be tabs instead if you want)...\n\n        **... Example usage 2:** `\u003cprefix\u003e{command} \u003coptional argument name\u003e` - this other cool thing that could have been added to the list of features provided by the bot.\n    - **Usage example 1**: You can use this command like this: ``{prefix}{command_without_the_bot_in_front_of_it} {argument_name}`` (spaces inside curly braces are spaces, not tabs...)).\n    \"\"\"\n\n\n0\nimport discord # type check\nfrom discord.ext import commands  # for the commands decorator\nfrom discord.utils import escape_mentions  # for escaping user mentions\n''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''''''\n# This class is used for getting the prefix that the bot uses for commands in text channels (chat rooms etc.) inside servers.\nclass GetPrefixInTextChannel(commands.Cog):\n\n  def __init__(self, bot) -\u003e None: # initializer / instance creator\n    self.bot = bot # type check\n    self.cog_name = self.__class__.__name__\n\n\n\nGawesomer1337/discord-bot0\nimport discord # type check\nfrom discord.ext import commands  # for the commands decorator\n\n\n''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' ''' '''\n# This class is used for getting the prefix that the bot uses for commands in text channels (chat rooms etc.) inside servers.\n\n\n\nimport json\n\n\nclass JsonFile:\n\n    def __init__(self, filepath):  # noqa # type check\n        \"\"\"Class constructor method.\"\"\"\n        if not isinstance(filepath, str)):  # noqa # type check\n            raise TypeError(\"Argument 'filepath' must be a string!\")  # noqa\n\n        with open(filepath, encoding=\"utf-8\")):  # noqa # type check\n            self.content = json_loads(open((encoding=\"utf-8\")), encoding=None)\n\n\n\nimport importlib  # noqa\nimport sys as __sys__\nfrom importlib._bootstrap import * from ... .. .. is not supported on python 2\"\n\n\nclass PackageImporter:\n\n    def __init__(self, filepath):  # noqa # type check\n        \"\"\"Class constructor method.\"\"\"\n        if isinstance(filepath, str)):  # noqa # type check\n            raise TypeError(\"Argument 'filepath' must be a string!\")  # noqa\n\n\n\nfrom .._models import *\n\n\nclass Pipeline:\n\n    def __init__(self):  # noqa # type check\n        \"\"\"Class constructor method.\"\"\"\n        self.model = Model() if callable(Model))\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n\nclass Exception:\n\n    def __init__(self, exception=None):  # noqa # type check\n        \"\"\"Class constructor method.\"\"\"\n        if isinstance(exception, TypeError)):\n            pass\n        else:\n            raise NotImplementedError(\"Method '__init__.self.__init__.self)' is not implemented!\")\n\n\n\nfrom .._models import *\n\n\nclass ModelFactory:\n\n    def __new__(cls):  # noqa # type check\n        \"\"\"Class constructor method.\"\"\"\n        model = cls.Model()\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n\nfrom .._models import *  # noqa # type check\n\n\nclass Model(BaseEstimator)):  # noqa # type check\n        \"\"\"Class constructor method.\"\"\"\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n\nfrom .._models import *  # noqa # type check\n\n\nclass Model(BaseEstimator)):  # noqa # type check\n        \"\"\"Class constructor method.\"\"\"\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n\nfrom .._models import *  # noqa # type check\n\n\nclass Model(BaseEstimator)):  # noqa # type check\n        \"\"\"Class constructor method.\"\"\"\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n\nimport discord  # noqa # type check\nfrom .._models import *\n\n\nclass Guild(BaseEstimator)):  # noqa # type check\n        \"\"\"Class constructor method.\"\"\"\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\nclass Exception:\n\n    def __init__(self, exception=None):  # noqa # type check\n        \"\"\"Class constructor method.\"\"\"\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\nfrom .._models import *\n\n\nclass Model(BaseEstimator)):  # noqa # type check\n        \"\"\"Class constructor method.\"\"\"\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\nfrom .._models import *\n\n\nclass Model(BaseEstimator)):  # noqa # type check\n        \"\"\"Class constructor method.\"\"\"\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\nimport json\nfrom .._models import *  # noqa # type check\n\n\nclass Model(BaseEstimator):  # noqa # type check\n        \"\"\"Class constructor method.\"\"\"\n        if isinstance(filepath, str)):\n            pass\n        if not isinstance(exception, Exception), None)):\n           raise NotImplementedError(\"Argument 'filepath' must be a string!\")\n\n\n\ntests/test_py.py\nimport sys as __sys__\n\nfrom ...._models import *  # noqa # type check\n\n\nclass ModelFactory():  # noqa # type check\n    \"\"\"Class constructor method.\"\"\"\n        if isinstance(filepath, str)):\n            pass\n        else:\n           self.content = json_loads(open((encoding=\"utf-8\"))), encoding=None))\n\n\n\nHusky/teststests/_models.py0\nfrom .abc import BaseEstimator\n\n\nclass ModelFactory():  # noqa # type check\n    \"\"\"Class constructor method.\"\"\"\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n\nimport json\nfrom .._models import *  # noqa # type check\n\n\nclass Model(BaseEstimator):  # noqa # type check\n        \"\"\"Class constructor method.\"\"\"\n        if isinstance(filepath, str)):\n            pass\n        else:\n           raise NotImplementedError(\"Argument 'filepath' must be a string!\"))\n\n\n\nimport discord \nfrom ..._models import *  # noqa # type check\n\n\nclass ModelFactory():  # noqa # type check\n    \"\"\"Class constructor method.\"\"\"\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n\n\n\n0\nfrom ..abc._model import BaseModel, BaseEstimator\nimport tensorflow as tf\nimport numpy as np\nimport timeit\n# noqa # type check\nfrom typing import *  # noqa # type check\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n\nHusky/models.py0\ntests/_models.py0\nimport sys as __sys__\nimport json \nfrom ..abc._model import BaseModel,BaseEstimator\nclass ModelFactory():  # noqa # type check\n    \"\"\"Class constructor method.\"\"\"\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n\n\n\n\n\n\n\n\nHusky/ \n\n\n_models.py\nimport json \nfrom ..abc._model import BaseModel,BaseEstimator"},"finish_reason":"stop"}],"usage":{"prompt_tokens":9,"completion_tokens":3621,"total_tokens":3630}}

Sorry I couldn’t get it to word-wrap. This is what it looked like in the terminal…