Skip to content

Commit d2c3520

Browse files
authored
Merge pull request #7 from elastacloud/feature/dotprompt-sql-upgrade
Upgrade DotPrompt.Sql to full feature parity with DotPrompt 0.0.6.1
2 parents 2c4509e + b27a9c2 commit d2c3520

12 files changed

Lines changed: 232 additions & 136 deletions

DotPrompt.Sql.Cli/DotPrompt.Sql.Cli.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
</ItemGroup>
2727

2828
<ItemGroup>
29-
<PackageReference Include="DotPrompt" Version="0.0.5.1" />
29+
<PackageReference Include="DotPrompt" Version="0.0.6.1" />
3030
</ItemGroup>
3131

3232
</Project>

DotPrompt.Sql.Test/TestSqlPromptEntity.cs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,17 @@ public async Task AddSqlPrompt_ValidPrompt_InsertsSuccessfully()
8181
Model = "gpt4",
8282
OutputFormat = "json",
8383
MaxTokens = 500,
84+
Temperature = 0.7f,
8485
SystemPrompt = "Optimize SQL queries.",
8586
UserPrompt = "Suggest indexing improvements.",
8687
Parameters = new Dictionary<string, string>
8788
{
88-
{ "Temperature", "0.7" },
89-
{ "TopP", "0.9" }
89+
{ "query", "string" },
90+
{ "topP", "number" }
9091
},
9192
Default = new Dictionary<string, object>
9293
{
93-
{ "Temperature", "0.5" }
94+
{ "topP", "0.9" }
9495
}
9596
};
9697

@@ -111,16 +112,17 @@ public async Task AddSqlPrompt_SamePromptNoChanges_DoesNotInsertNewVersion()
111112
Model = "gpt4",
112113
OutputFormat = "json",
113114
MaxTokens = 200,
115+
Temperature = 0.5f,
114116
SystemPrompt = "Optimize SQL queries.",
115117
UserPrompt = "Suggest indexing improvements.",
116118
Parameters = new Dictionary<string, string>
117119
{
118-
{ "Temperature", "0.7" },
119-
{ "TopP", "0.9" }
120+
{ "query", "string" },
121+
{ "topP", "number" }
120122
},
121123
Default = new Dictionary<string, object>
122124
{
123-
{ "Temperature", "0.5" }
125+
{ "topP", "0.9" }
124126
}
125127
};
126128

@@ -145,8 +147,8 @@ public async Task AddSqlPrompt_WhenMaxTokensChanges_ShouldInsertNewVersion()
145147
MaxTokens = 500,
146148
SystemPrompt = "Optimize SQL queries.",
147149
UserPrompt = "Suggest indexing improvements.",
148-
Parameters = new Dictionary<string, string> { { "Temperature", "0.7" } },
149-
Default = new Dictionary<string, object> { { "Temperature", "0.5" } }
150+
Parameters = new Dictionary<string, string> { { "query", "string" } },
151+
Default = new Dictionary<string, object> { { "query", "SELECT 1" } }
150152
};
151153

152154
var entity2 = new SqlPromptEntity
@@ -157,8 +159,8 @@ public async Task AddSqlPrompt_WhenMaxTokensChanges_ShouldInsertNewVersion()
157159
MaxTokens = 512, // Changed value
158160
SystemPrompt = "Optimize SQL queries.",
159161
UserPrompt = "Suggest indexing improvements.",
160-
Parameters = new Dictionary<string, string> { { "Temperature", "0.7" } },
161-
Default = new Dictionary<string, object> { { "Temperature", "0.5" } }
162+
Parameters = new Dictionary<string, string> { { "query", "string" } },
163+
Default = new Dictionary<string, object> { { "query", "SELECT 1" } }
162164
};
163165

164166
await _repository.AddSqlPrompt(entity1); // Insert first version
@@ -182,8 +184,8 @@ public async Task GetSqlPromptByName_GivenTwoPromptsOfTheSameNameAreAdded_Should
182184
MaxTokens = 500,
183185
SystemPrompt = "Optimize SQL queries.",
184186
UserPrompt = "Suggest indexing improvements.",
185-
Parameters = new Dictionary<string, string> { { "Temperature", "0.7" } },
186-
Default = new Dictionary<string, object> { { "Temperature", "0.5" } }
187+
Parameters = new Dictionary<string, string> { { "query", "string" } },
188+
Default = new Dictionary<string, object> { { "query", "SELECT 1" } }
187189
};
188190

189191
var entity2 = new SqlPromptEntity
@@ -194,8 +196,8 @@ public async Task GetSqlPromptByName_GivenTwoPromptsOfTheSameNameAreAdded_Should
194196
MaxTokens = 512, // Changed value
195197
SystemPrompt = "Optimize SQL queries 2.", // changed value
196198
UserPrompt = "Suggest indexing improvements.",
197-
Parameters = new Dictionary<string, string> { { "Temperature", "0.7" } },
198-
Default = new Dictionary<string, object> { { "Temperature", "0.5" } }
199+
Parameters = new Dictionary<string, string> { { "query", "string" } },
200+
Default = new Dictionary<string, object> { { "query", "SELECT 1" } }
199201
};
200202

201203
await _repository.AddSqlPrompt(entity1); // Insert first version

DotPrompt.Sql/DotPrompt.Sql.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
<ItemGroup>
2929
<PackageReference Include="Dapper" Version="2.1.35" />
30-
<PackageReference Include="DotPrompt" Version="0.0.5.1" />
30+
<PackageReference Include="DotPrompt" Version="0.0.6.1" />
3131
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.0.1" />
3232
<PackageReference Include="YamlDotNet" Version="16.3.0" />
3333
</ItemGroup>

DotPrompt.Sql/Resources/SqlQueries/AddSqlPrompt.sql

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@ CREATE OR ALTER PROCEDURE sp_AddSqlPrompt
22
@PromptName VARCHAR(255),
33
@Model VARCHAR(255),
44
@OutputFormat VARCHAR(255),
5+
@OutputSchema NVARCHAR(MAX),
56
@MaxTokens INT,
7+
@Temperature FLOAT,
68
@SystemPrompt NVARCHAR(MAX),
79
@UserPrompt NVARCHAR(MAX),
10+
@FewShots NVARCHAR(MAX),
811
@Parameters PromptParameterType READONLY, -- Table-Valued Parameter
912
@Defaults ParameterDefaultType READONLY, -- Table-Valued Parameter
1013
@IsNewVersion BIT OUTPUT -- New Output Parameter
@@ -34,9 +37,12 @@ SET @NewVersion = ISNULL(@ExistingVersion, 0) + 1;
3437
WHERE PromptId = @ExistingPromptId
3538
AND Model = @Model
3639
AND OutputFormat = @OutputFormat
37-
AND MaxTokens = @MaxTokens
40+
AND (OutputSchema = @OutputSchema OR (OutputSchema IS NULL AND @OutputSchema IS NULL))
41+
AND (MaxTokens = @MaxTokens OR (MaxTokens IS NULL AND @MaxTokens IS NULL))
42+
AND (Temperature = @Temperature OR (Temperature IS NULL AND @Temperature IS NULL))
3843
AND SystemPrompt = @SystemPrompt
3944
AND UserPrompt = @UserPrompt
45+
AND (FewShots = @FewShots OR (FewShots IS NULL AND @FewShots IS NULL))
4046
)
4147
OR EXISTS (
4248
-- Parameters changed?
@@ -64,8 +70,8 @@ SET @NewVersion = ISNULL(@ExistingVersion, 0) + 1;
6470
)
6571
BEGIN
6672
-- Insert new version of the prompt
67-
INSERT INTO PromptFile (PromptName, VersionNumber, CreatedAt, ModifiedAt, Model, OutputFormat, MaxTokens, SystemPrompt, UserPrompt)
68-
VALUES (@PromptName, @NewVersion, GETUTCDATE(), GETUTCDATE(), @Model, @OutputFormat, @MaxTokens, @SystemPrompt, @UserPrompt);
73+
INSERT INTO PromptFile (PromptName, VersionNumber, CreatedAt, ModifiedAt, Model, OutputFormat, OutputSchema, MaxTokens, Temperature, SystemPrompt, UserPrompt, FewShots)
74+
VALUES (@PromptName, @NewVersion, GETUTCDATE(), GETUTCDATE(), @Model, @OutputFormat, @OutputSchema, @MaxTokens, @Temperature, @SystemPrompt, @UserPrompt, @FewShots);
6975

7076
SET @NewPromptId = SCOPE_IDENTITY();
7177

DotPrompt.Sql/Resources/SqlQueries/CreateDefaultPromptTables.sql

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,12 @@ CREATE TABLE PromptFile (
99
ModifiedAt DATETIMEOFFSET NULL,
1010
Model VARCHAR(255) NULL,
1111
OutputFormat VARCHAR(255) NOT NULL DEFAULT '',
12-
MaxTokens INT NOT NULL,
12+
OutputSchema NVARCHAR(MAX) NULL,
13+
MaxTokens INT NULL,
14+
Temperature FLOAT NULL,
1315
SystemPrompt NVARCHAR(MAX) NOT NULL DEFAULT '',
1416
UserPrompt NVARCHAR(MAX) NOT NULL DEFAULT '',
17+
FewShots NVARCHAR(MAX) NULL,
1518
CONSTRAINT UQ_PromptName_Version UNIQUE (PromptName, VersionNumber)
1619
);
1720
END;
@@ -27,6 +30,33 @@ ALTER TABLE PromptFile ADD CONSTRAINT UQ_PromptName_Version UNIQUE (PromptName,
2730
END;
2831
END;
2932

33+
-- Add OutputSchema column to PromptFile (if not exists)
34+
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'PromptFile' AND COLUMN_NAME = 'OutputSchema')
35+
BEGIN
36+
ALTER TABLE PromptFile ADD OutputSchema NVARCHAR(MAX) NULL;
37+
END;
38+
39+
-- Make MaxTokens nullable (if currently NOT NULL)
40+
IF EXISTS (
41+
SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
42+
WHERE TABLE_NAME = 'PromptFile' AND COLUMN_NAME = 'MaxTokens' AND IS_NULLABLE = 'NO'
43+
)
44+
BEGIN
45+
ALTER TABLE PromptFile ALTER COLUMN MaxTokens INT NULL;
46+
END;
47+
48+
-- Add Temperature column to PromptFile (if not exists)
49+
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'PromptFile' AND COLUMN_NAME = 'Temperature')
50+
BEGIN
51+
ALTER TABLE PromptFile ADD Temperature FLOAT NULL;
52+
END;
53+
54+
-- Add FewShots column to PromptFile (if not exists)
55+
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'PromptFile' AND COLUMN_NAME = 'FewShots')
56+
BEGIN
57+
ALTER TABLE PromptFile ADD FewShots NVARCHAR(MAX) NULL;
58+
END;
59+
3060
-- Create the PromptParameters table if it doesn't exist
3161
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'PromptParameters')
3262
BEGIN

DotPrompt.Sql/Resources/SqlQueries/GetLatestPromptByName.sql

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@ WITH LatestPrompts AS (
77
ModifiedAt,
88
Model,
99
OutputFormat,
10+
OutputSchema,
1011
MaxTokens,
12+
Temperature,
1113
SystemPrompt,
1214
UserPrompt,
15+
FewShots,
1316
ROW_NUMBER() OVER (PARTITION BY PromptName ORDER BY VersionNumber DESC) AS RowNum
1417
FROM PromptFile
1518
)
@@ -21,8 +24,11 @@ SELECT
2124
lp.ModifiedAt,
2225
lp.Model,
2326
lp.OutputFormat,
27+
lp.OutputSchema,
2428
lp.MaxTokens,
29+
lp.Temperature,
2530
lp.SystemPrompt,
26-
lp.UserPrompt
31+
lp.UserPrompt,
32+
lp.FewShots
2733
FROM LatestPrompts lp
2834
WHERE lp.PromptName = @PromptName AND lp.RowNum = 1;
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
INSERT INTO PromptFile (PromptName, CreatedAt, ModifiedAt, Model, OutputFormat, MaxTokens, SystemPrompt, UserPrompt)
1+
INSERT INTO PromptFile (PromptName, CreatedAt, ModifiedAt, Model, OutputFormat, OutputSchema, MaxTokens, Temperature, SystemPrompt, UserPrompt, FewShots)
22
OUTPUT INSERTED.PromptId
3-
VALUES (@PromptName, @CreatedAt, @ModifiedAt, @Model, @OutputFormat, @MaxTokens, @SystemPrompt, @UserPrompt)
3+
VALUES (@PromptName, @CreatedAt, @ModifiedAt, @Model, @OutputFormat, @OutputSchema, @MaxTokens, @Temperature, @SystemPrompt, @UserPrompt, @FewShots)

DotPrompt.Sql/Resources/SqlQueries/LoadPrompts.sql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@ WITH LatestPrompts AS (
66
ModifiedAt,
77
Model,
88
OutputFormat,
9+
OutputSchema,
910
MaxTokens,
11+
Temperature,
1012
SystemPrompt,
1113
UserPrompt,
14+
FewShots,
1215
VersionNumber,
1316
ROW_NUMBER() OVER (PARTITION BY PromptName ORDER BY VersionNumber DESC) AS RowNum
1417
FROM PromptFile
@@ -20,9 +23,12 @@ SELECT
2023
lp.ModifiedAt,
2124
lp.Model,
2225
lp.OutputFormat,
26+
lp.OutputSchema,
2327
lp.MaxTokens,
28+
lp.Temperature,
2429
lp.SystemPrompt,
2530
lp.UserPrompt,
31+
lp.FewShots,
2632
pp.ParameterId,
2733
pp.ParameterName,
2834
pp.ParameterValue,

0 commit comments

Comments
 (0)