File size: 1,826 Bytes
26de23c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import unittest
import numpy as np

from decisions_api import assemble, build_plan
from prompt_templates import build_prompt_plan, finish_answers


class PromptChecks(unittest.TestCase):
    def test_default_is_identical_and_explicit_rubrics_preserved(self):
        body = {"model":"m", "state":"Facts.", "questions":{
            "b":{"type":"noul","instructions":"Claim.","criteria":{"true":"Supported.","false":"Refuted."}},
            "c":{"type":"choice","instructions":"Pick.","criteria":{"a":"Alpha.","b":"Beta."}}}}
        old = build_plan(body)
        p = build_prompt_plan(body)
        self.assertEqual(old.pairs, p.pairs)
        e = np.array([.2,.8,.7,.1])
        self.assertEqual(assemble(old,e), finish_answers(p,e))
        direct = build_prompt_plan(body,"direct_noul")
        self.assertEqual(old.pairs,direct.pairs)
        plain = build_prompt_plan(body,"unquoted")
        self.assertIn("Alpha.",plain.pairs[2][1])

    def test_direct_boolean_and_following_option_offsets(self):
        body = {"model":"m", "state":"Facts.", "questions":{
            "b":{"type":"noul","instructions":"Claim."},
            "c":{"type":"choice","instructions":"Pick.","criteria":{"a":"Alpha.","b":"Beta."}}}}
        p = build_prompt_plan(body,"direct_noul")
        self.assertEqual(len(p.pairs),3)
        self.assertEqual(p.pairs[0][1],"Claim.")
        out=finish_answers(p,[.1,.2,.8])
        self.assertEqual(out["b"]["noul"],.1)
        self.assertEqual(out["c"]["choice"],"b")

    def test_multiwindow_assertion_uses_any_support(self):
        body={"model":"m","state":"x"*25000,"questions":{"b":{"type":"noul","instructions":"Claim."}}}
        p=build_prompt_plan(body,"direct_noul")
        self.assertEqual(finish_answers(p,[.1,.9])["b"]["noul"],.9)


if __name__ == "__main__":
    unittest.main()