microsoft / TypeChat

TypeChat is a library that makes it easy to build natural language interfaces using types.
https://microsoft.github.io/TypeChat/
MIT License
8.06k stars 379 forks source link

Python housekeeping #188

Closed DanielRosenwasser closed 4 months ago

DanielRosenwasser commented 4 months ago

This PR makes the following changes

I didn't spend much time on the music sample - there's a lot of type suppressions there and that probably needs its own PR.

I spent a decent amount of time replumbing the math example - and eventually realized there were a lot of surprising issues. For one, the TS schema translation has errors, and the signatures are translated to Callable<any, number>! That's because Callable isn't supported, and TypeChat doesn't translate tuples yet. On top of that, the reason Pydantic can't deal with JsonProgram is due to the lack of indirection in the union type - something that Python 3.12's type aliases would give us. If we were able to state that the example only works in Python 3.12, I think we could clean it up a lot and get real validation working there.