Contact Ning Ren (renning22@gmail.com) for discussion, contribution or ☕.
Finae's vision is to build a AI-powered programming languange and greatly simplify programming.
For now, Finae can be used as a tool to more easily work with LLMs. With simple configurations, LLMs output turns into stable and easy-to-process Python objects.
The key idea is to exploit 🌲tree-of-thoughts and ✔️self-consistency of LLMs and find the stable outputs via heavy/concurrent queries against multiple LLMs.
Think about asking the same question in different words or from different angles. The answer will converge if an LLM really knows it (if the fact was well-spread in the training corpus).
This approach works better with multiple LLMs, given that each LLM is a unique representation of its training dataset. And it also works well with smaller models (~7B parameters) as it eliminates hallucinations.
See more 🪐vision and mission behind Finae.
@finae.Concept
class Mountain:
...
@finae.Attribute
def name(self):
...
@finae.Attribute
def location(self):
...
Mountain
m = Mountain('give me any mountain in this world')
print(m.name())
m = Mountain('Highest mountain in the world')
print(m.altitude())
m = Mountain('Mount Everest')
print(m.altitude())
mountains = Mountain.query('Top 50 mountains in the wolrd')
for m in mountains:
print(m.name())
Integer/Float
i = Integer('give me a code generate integer in python')
i = Integer('show me an example of Python integer')
i = Integer('show me an example of Python float')
Date
d = Date('independence day of United States')
print(d)
d = Date('1995/03/01')
print(d)
d = Date('03-01-1995')
print(d)
d = Date('year 1995, March, first')
print(d)
d = Date('the day after 1995/03/01')
print(d)
d = Date('the day after ', d)
print(d)
Array
a = Array('[1, 2, 3, 4]')
print(a)
a = Array('1, 2, 3, 4')
print(a)
a = Array('1 2 5 6 10')
print(a)
a = Array('1 to 4')
print(a)
a = Array('1 to 4, inclusive')
print(a)
a = Array('give me an array of integer, length less than 20')
print(a)
Numpy, pandas
n = Numpy('give me a numpy array, length 10')
print(n)
n = Numpy("""
1 2 3
4 5 6
7 8 9
""")
print(n)
t = PandasTable('Pandas table, columns: name, school, age')
print(t)
t = PandasTable("""
name school age
foo A y
bar B z
""")
print(t)
E.g. up to 100 for example, and ranked by some scores, keep LRU.
for m in Mountain.samples():
print(m)
The cache is local database file or py that can be checked-in to codebase and version-controlled. (Or delete if want to drop the cache.)
d = Date('independence day of United States')
d = Date('independence day of United States') # read from cache
d = Date('independence day of United States') # read from cache
> pip install -e .
python3 -m pip install --upgrade build
python3 -m pip install --upgrade twine
rm dist/ -rf
python3 -m build
twine check dist/*
twine upload dist/*