from symai.extended.personas import PersonaBuilder
from symai.extended.personas import Dialogue
from symai.extended.api_builder import APIExecutor
from symai.extended.personas.student import MaxTenner
from symai import Interface
tts = Interface('tts')
tts("hello world", path='./marius_tts.mp3', voice='echo')
from symai.extended import Conversation
crawler = Interface('selenium') # get data from web
data = crawler('https://github.com/ExtensityAI/symbolicai')
INFO:WDM:====== WebDriver manager ====== 2023-11-17 09:24:37,290 ====== WebDriver manager ====== 2023-11-17 09:24:37,290 ====== WebDriver manager ====== INFO:WDM:Get LATEST chromedriver version for google-chrome 2023-11-17 09:24:37,649 Get LATEST chromedriver version for google-chrome 2023-11-17 09:24:37,649 Get LATEST chromedriver version for google-chrome INFO:WDM:Get LATEST chromedriver version for google-chrome 2023-11-17 09:24:37,717 Get LATEST chromedriver version for google-chrome 2023-11-17 09:24:37,717 Get LATEST chromedriver version for google-chrome INFO:WDM:Driver [/Users/xpitfire/.wdm/drivers/chromedriver/mac64/119.0.6045.105/chromedriver-mac-x64/chromedriver] found in cache 2023-11-17 09:24:37,781 Driver [/Users/xpitfire/.wdm/drivers/chromedriver/mac64/119.0.6045.105/chromedriver-mac-x64/chromedriver] found in cache 2023-11-17 09:24:37,781 Driver [/Users/xpitfire/.wdm/drivers/chromedriver/mac64/119.0.6045.105/chromedriver-mac-x64/chromedriver] found in cache DEBUG:selenium.webdriver.common.service:Started executable: `/Users/xpitfire/.wdm/drivers/chromedriver/mac64/119.0.6045.105/chromedriver-mac-x64/chromedriver` in a child process with pid: 1890
conv = Conversation(data) # initialize conversation with data
conv("""[Task]
Write an elaborate project introduction for the project proposal.
Include the request for:
- funding
- community visibility
- development support
""");
Project Title: "SymbolicAI: Integrating the Power of Neuro-Symbolic Computing Into Large Language Models" Introduction: At the forefront of cognitive and computational advancements lies SymbolicAI, an innovative library crafted to revolutionize the way we perceive and interact with machine intelligence. Embarking on a journey where classical programming synergizes with the potent capabilities of neuro-symbolic computing, we aim to seamlessly blend the precision of symbolic reasoning with the fluid adaptability of machine learning. Our mission is to empower developers, researchers, and innovators with a comprehensive toolbox— one that paves the way for constructing applications that not only think but reason, deduce, and evolve. SymbolicAI has been meticulously engineered to serve as the backbone for applications that require the critical integration of traditional programming methods and the advanced, intuitively designed differentiable programs that lie at the heart of modern artificial intelligence. The library stands as a testament to our commitment to providing a rich, compositional framework that invites contributions and collaboration, furthering research at the nexus of neuro-symbolic exploration. Request for Funding: Our ambitious endeavors to refine and enhance SymbolicAI necessitate considerable funding. This financial support would underwrite the technical development, including expanding the library's capabilities, maintaining the infrastructure, testing and optimizing the framework for robust, industry-level deployment, and ensuring that SymbolicAI retains its cutting-edge relevance. Investment in SymbolicAI also represents a strategic move towards positioning Large Language Models (LLMs) as central figures within the computational landscape. Funding will facilitate the next leap in our journey, as we seek to create a singular platform where developers can not only code but also instruct, probe, and educate the neuro-symbolic models—entrusting them with the responsibility to augment human potential across various domains. Request for Community Visibility: Visibility within the community is paramount for the propagation of any groundbreaking technology. As such, we ardently seek avenues to uplift the presence of SymbolicAI within the vast expanse of the tech community. Through featured articles, high-profile open-source repositories, collaborations with academic institutions, and presentations at industry conferences, we intend to illuminate the potential that SymbolicAI holds. Our aspiration is to ignite conversations, encourage scrutiny and discourse, and invite the open-source community's collective brilliance to refine and steer SymbolicAI towards unforeseen horizons. We believe that heightened community visibility will unlock doors to innovative applications, invoke diverse perspectives, and spur an evolution that resonates with the very core of our technological ethos. Request for Development Support: The evolution of SymbolicAI hinges not only on conceptual breakthroughs but also on the collective contribution of skilled developers who can iterate, debug, and innovate. We thus extend our invitation to developers who harbor a passion for AI and wish to contribute to the exponential growth of SymbolicAI. We seek individuals with expertise in neuro-symbolic computing, large language models, and cognitive architecture, as well as those who are proficient in Python, machine learning frameworks, and differencing programming techniques. Collaborative development will enable us to expand the library's functionality, address community feedback, enhance user experience, and modulate the resource to resonate with industry needs. In conclusion, we assert that the SymbolicAI library is not merely a technological venture; it is a collaborative odyssey that, with adequate funding, community visibility, and development support, has the potential to redefine our interaction with machine intelligence. The prospect of what can be achieved is boundless, contingent on the belief and backing of stakeholders who share our vision—a vision that speaks of an era where neuro-symbolic computing and LLMs become the keystones of cognitive technology.
source = APIExecutor() # creates code on the fly and executes it
data = source('Fetch data from URL https://www.ykilcher.com/') # interprets the instruction to generate a HTTP request
print(source._code)
def run(url: str) -> str: # [MANAGED] entry point cannot be changed # [MANAGED-BEGIN] mandatory imports here import traceback import requests from symai import Function # [MANAGED-END] mandatory imports here try: # [MANAGED] must contain this line, do not change # Make a GET request to fetch data from the given URL response = requests.get(url) # Check if the response was successful if response.status_code != 200: return f"Failed to fetch data: {response.status_code}" # If successful, return the content of the response return response.text # Returning the content as text except Exception as e: # [MANAGED] must catch all exceptions and return them as string tb = traceback.format_exc() # [MANAGED] return full error stack trace as string return tb # [MANAGED] return tb as string, do not change # [STATIC CONTEXT] DO NOT CHANGE ANYTHING BELOW THIS LINE value = "https://www.ykilcher.com/" # The URL from the instruction is provided here res = run(value) # [MANAGED] must contain this line, do not change
text = data.extract('Plain text') # extracts the plain text from the entire HTML page
text.value[:100] # show the fetched data
crawler = Interface('selenium') # init selenium interface
additional_info = crawler('https://scholar.google.com/citations?user=T3Ji6P4AAAAJ')
builder = PersonaBuilder() # generate based on crawled data a persona
YannicKilcher = builder('Yannic Kilcher', description=text | additional_info) # builds a persona based on the extracted text and fills in blanks with hallucinated data
yannic = YannicKilcher() # instanciate a newly generated persona
yannic.summarize() # show the persona summary
max = MaxTenner() # create a pre-defined persona
dialogue = Dialogue(max, yannic, n_turns=2) # run a dialogue between the two personas
dialogue("Hey Yannic, tell me more about your latest video where every instruction is a prompt"); # initializes and run the dialogue
dialogue.render('demos') # render an audio file of the dialogue
[Max Tenner::]: Hey Yannic, tell me more about your latest video where every instruction is a prompt [Yannic Kilcher::]: Hey Max, I'm glad you asked! My latest video explores the concept of a "Prompt-based Learning System." Essentially, it's an AI model that operates entirely on prompts, which are guiding instructions in natural language. This system is intriguing because it reflects a more intuitive way of human-computer interaction, much like how we naturally communicate with one another. By using prompts as instructions, we can direct the AI to perform specific tasks without hard-coding the behaviors. This approach also showcases the versatility of language models that are capable of understanding and executing a wide range of commands based on the context provided by these prompts. In the video, I dive into how this technology works, its potential applications, and some of the challenges that come with it. For instance, crafting an effective prompt can be an art in itself, and the AI’s response can sometimes be unpredictable. But the advantages, such as ease of use and adaptability, could make this a staple in how we leverage AI in the future. As you're also someone who's passionate about making technology understandable and accessible, I thought this topic might resonate with you, Max. Would love to hear your thoughts on this! [Max Tenner::]: That sounds super interesting, Yannic! The concept of using natural language to guide AI mirrors how I like to approach tech – intuitively and creatively. I can see how a Prompt-based Learning System could become incredibly user-friendly, especially for those who may be intimidated by traditional coding. The potential for varied applications seems massive. We could use it for everything from personal assistants to more complex tasks like data analysis or language translation, all with a simple prompt. And you're right, crafting prompts is indeed an art. It's like choosing the perfect command in a video game to advance the story or unlock a new ability. Your point about unpredictability is something I've encountered while tinkering with code or even when coaching my junior football team – you can give instructions, but the outcome can always vary! Maybe I'll experiment with this kind of AI for organizing game strategies. I'll definitely check out your video in full and share it with my sister Lucy, who's into coding. It could spark some great projects or at least give us plenty to talk about. Keep up the great work, Yannic. Your content always gets my brain gears turning! [Yannic Kilcher::]: Appreciate it, Max! I'm always excited to share ideas that could potentially inspire or facilitate new ways of interacting with technology. And I love the analogy of using commands in video games — it's a great way to look at it. The diversity of instructions and the corresponding actions in games really do mirror the dynamics of prompt-based AI. It's also great to hear you're thinking of applying this to your coaching. Sports strategies are dynamic and complex, which makes them a fascinating use case for AI. The adaptability of prompt-based systems could help in analyzing game patterns or optimizing training programs. It makes me happy to know that my content sparks conversations and ideas, especially across different fields and interests. I'm really looking forward to hearing any insights or experiences you and Lucy might have after discussing the video. And who knows, this could lead to practical applications in coding or even new strategies on the football field. Thanks for the support, Max, and for the engaging discussion. Your perspective always adds valuable depth to the topic at hand. Keep the feedback coming!
('demos/tmp/output.mp3', <_io.BufferedRandom name='demos/tmp/output.mp3'>)
dialogue.render('demos', overwrite=True) # render an audio file of the dialogue
('demos/tmp/output.mp3', <_io.BufferedRandom name='demos/tmp/output.mp3'>)