I'm in the process of releasing a few of my internal libraries for building LLM-based apps. The first release is `typedtemplate`, a library that allows you to use Pydantic syntax to describe the data required by a template to render.
# What does it currently do?
- Documentation: Provides a class that you can easily generate documentation for. This means all your normal python documentation generators and tooling can provide useful docs for your templates that are easily consumable by your team.
- IDE/Copilot Support: Pydantic classes provide an great developer experience in the IDE with helpful autocomplete and a structure that Copilot understands well.
- Validation: Runtime validation that the data conforms to the type definitions.
# Why did I create this?
I'm working with LLMs everyday now. I have hundreds of LLM prompts (and countless variants) in my project. If you are like me, it doesn't take long after creating a template to forget the shape of the data required to make it render properly. I'm lazy. This library lets me forget more things and lean on my tooling.
# Notes
- Currently works with Jinja2 and Django templating engines. If you need a different engine, just ask (quick to implement).
- Was built to play nice with any framework.
- Next library coming is a Non-OpenAI interface to LLMs that feels good. Uses LiteLLM under the hood to support almost all available LLMs.
Agree, $25 per user is insane. Not sure if this is necessarily part of a bubble or the result of some shady dealing for the VC's involved to pick up more Facebook stock to make their portfolio's look like winners.
My company (ThoughtLeadr) is using Haskell to analyze big data (social networks) to great effect. Although, I will admit finding great Haskell programmers in the wild is rather challenging.
Network effect with programming languages is a difficult nut to crack. That's the reason most new languages build on the syntax and features of existing "successful" languages.
The toolchain aspect has been less of an issue for us since we're using it for pure data analysis rather than shoehorning it into building webapps etc.
I basically read this as, "I want everything I could every possibly use in the global scope so I don't have to think about imports". Modern web development revolves heavily around open source frameworks. You can't escape the need to know about libraries outside the core language you program in, even with PHP.
If you are writing a trivially simple webapp, then you would be correct that you could hack together something with just the core language features of PHP.
I almost forgot. You can always send thugs to rough up their office and employees. Classic move. That actually happened to me during my first year in business here :P
I'm living in Shanghai right now so I've seen this move in a number of variations.
I can tell you legal recourse is a bit of a tricky thing. You really don't want to rely on contracts in a foreigner vs chinese situation. The supplier's guanxi (business relationships) will almost always trump your connections. The only way to resolve things are:
A) Place a larger order under safer terms for you - I know that sounds crazy but you can sometimes get suppliers to "do the right thing" by rewarding them for their bad behavior. Offer to purchase an extra large order where the money they already have is the down payment. Requires a certain morale flexibility to hand more money over to a thief (but it can get the job done)!
B) Buy some guanxi. Get yourself a high end law firm (or consultant) based in Shenzhen and pay for their persuasive abilities with the local government and supplier in question.
2. Scripting HTML and CSS - Javascript (use standards based browsers only - avoid JQuery/libraries at first) http://javascript.crockford.com/
3. Intro Server side programming to template HTML pages - PHP (easy to grok for beginners - combine previous lessons with some simple dynamic data) http://php.net/manual/en/introduction.php
I agree with jasonkester, come up with a unique project that uses the technology you want to be hired for. Cut out TV/distractions on week nights and build it out. Use that as a show piece for getting the job you deserve.
Also, try to avoid big job sites like Monster or Dice. If you really want a Java (insert any other technology here) job, find Java bloggers you admire and track down where they work. You should be able to find a number of smaller companies with people you know can teach you a trick or two. With the field narrowed down, try to run into those people at tech meetups and let them know you're in the market. Follow up with comments on their blog posts or joining their conversations on twitter. If you don't come off as a stalker, you should be able to parlay a decent job offer out of it :P
I typically write mine down in a notebook. If its a really great idea, it doesn't normally just go away. You'll keep running into situations where it would be useful if the idea was already a reality. If after a week or two you still can't let the idea go, you "may" have a keeper. Get some feedback from friends and fellow techies - figure out which idea has the best chance of success and go with that.
PS - Don't second guess yourself after you've made a decision.
PPS - Don't undervalue the work you've already done on your current project. Execution is harder than ideation.
<self-promotion>
Take a peek at my company (ReignDesign). We design and build mobile games and applications for iOS, Android, Blackberry etc etc http://www.reigndesign.com/
</self-promotion>
# What does it currently do?
- Documentation: Provides a class that you can easily generate documentation for. This means all your normal python documentation generators and tooling can provide useful docs for your templates that are easily consumable by your team.
- IDE/Copilot Support: Pydantic classes provide an great developer experience in the IDE with helpful autocomplete and a structure that Copilot understands well.
- Validation: Runtime validation that the data conforms to the type definitions.
# Why did I create this?
I'm working with LLMs everyday now. I have hundreds of LLM prompts (and countless variants) in my project. If you are like me, it doesn't take long after creating a template to forget the shape of the data required to make it render properly. I'm lazy. This library lets me forget more things and lean on my tooling.
# Notes
- Currently works with Jinja2 and Django templating engines. If you need a different engine, just ask (quick to implement).
- Was built to play nice with any framework.
- Next library coming is a Non-OpenAI interface to LLMs that feels good. Uses LiteLLM under the hood to support almost all available LLMs.