Create LangChain alternative AssemblyChain - Day 1
Today, I would like to start writing about a Dojo project that I began yesterday.
Through the application processes that I have been going through for the past few weeks, I have rediscovered an interest in C# and .NET.
During my time at e.GO Mobile, I have had a lot of contact with AI and ChatGPT and have been introduced to the LangChain project.
I would like to begin with setting up the project on GitHub.
Name and logo
I have chosen to name it AssemblyChain
. While Assembly
refers to the binary containers in .NET, Chain
naturally makes a “slight” reference to LangChain.
For the logo I have choosen an self-generted image by Midjourney:
Setup repository
The very first step I did was creating the repository on GitHub with an own organization. This repository will contain the .NET library with examples and documentation.
The license I have choosen the lesser strict LGPL v3.0.
Solution
To bring all sub projects together, I created a Visual Studio solution file by executing
dotnet new sln --name AssemblyChain
with dotnet CLI on the one and a Visual Studio Code workspace file on the other hand called AssemblyChain.code-workspace.
SDK project
The central project in the repository is the Software Development Kit module, which will contain all the core and basic types for all upcoming specific implementations.
To create a new class library, I executed
dotnet new classlib --output packages/AssemblyChain.SDK
from root directory and started with a generic object class called ACObject.cs
:
namespace AssemblyChain.SDK;
/// <summary>
/// A basic object.
/// </summary>
public abstract class ACObject
{
}
Sandbox
For the meantime, I have created a sandbox project in the form of a console application so that one can play around with parts of the SDK:
dotnet new console --output examples/AssemblyChain.Examples.Sandbox
I also had to update the XML of the new project file as well:
<ItemGroup>
<ProjectReference Include="../../packages/AssemblyChain.SDK/AssemblyChain.SDK.csproj" />
</ItemGroup>
Outlook
The next time I will write about the first “real” code I implemented and the structure I plan to use.
If you want to participate and/or have ideas, you can use the Discussions section on GitHub.