Skip to content

Instantly share code, notes, and snippets.

Last active February 17, 2024 03:53
Show Gist options
  • Save dgosbell/f3253c7ec52efe441b80596ffddea07c to your computer and use it in GitHub Desktop.
Save dgosbell/f3253c7ec52efe441b80596ffddea07c to your computer and use it in GitHub Desktop.
This is a script for tabular editor that will loop through all the measures in a model and get ChatGPT to write a description of the calculation.
#r "System.Net.Http"
using System.Net.Http;
using System.Text;
using Newtonsoft.Json.Linq;
// You need to signin to and create an API key for your profile then paste that key
// into the apiKey constant below
const string apiKey = "<YOUR API KEY HERE>";
const string uri = "";
const string question = "Explain the following calculation in a few sentences in simple business terms without using DAX function names:\n\n";
using (var client = new HttpClient()) {
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + apiKey);
foreach (var t in Model.Tables)
foreach ( var m in t.Measures)
// Only uncomment the following when running from the command line or the script will
// show a popup after each measure
//Info("Processing " + m.DaxObjectFullName)
//var body = new requestBody() { prompt = question + m.Expression };
var body =
"{ \"prompt\": " + JsonConvert.SerializeObject( question + m.Expression ) +
",\"model\": \"gpt-3.5-turbo-instruct\" " +
",\"temperature\": 1 " +
",\"max_tokens\": 2048 " +
",\"stop\": \".\" }";
var res = client.PostAsync(uri, new StringContent(body, Encoding.UTF8,"application/json"));
var result = res.Result.Content.ReadAsStringAsync().Result;
var obj = JObject.Parse(result);
var desc = obj["choices"][0]["text"].ToString().Trim();
m.Description = desc + "\n=====\n" + m.Expression;
Copy link

adamsabourin commented Mar 14, 2023 via email

Copy link

Hi Darren,
This was giving me 404 errors until I changed the model to the following:

","model": "gpt-3.5-turbo-instruct" " +

Copy link

@Power-BI-guy Thanks. it looks like they deprecated the previous model I've updated the script to use "gpt-3.5-turbo-instruct" too. I've also updated this more complicated sample which has some code to deal with the rate limiting

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