diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/101.html b/101.html new file mode 100644 index 0000000..6a3c146 --- /dev/null +++ b/101.html @@ -0,0 +1,639 @@ + + + + + + + + + + + + + + + + + + + + + + + + LLM Modding 101 - LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ + + + +

LLM Modding 101

+
+ Cover Image +
+ +

Introduction

+

In this section, I will discuss the basics of modding with LLM. Some parts might be too obvious to state, but since this is more of a general guide, I think I should mention almost everything that comes to mind. For the "Duh" parts, feel free to skip and continue reading.

+

Modding with LLM is an excellent way to add more lifelike conversations and memorable moments to your games. LLMs can be used to generate dialogue, descriptions, and even entire stories. They can also be used to create new characters, locations, and quests.

+

Here are some of the benefits of modding with LLMs:

+
    +
  • LLMs can generate more realistic and engaging dialogue than traditional scripting methods.
  • +
  • LLMs can create complex and memorable characters that players will love.
  • +
  • LLMs can be used to generate new content for your game, such as stories, quests, and locations.
  • +
  • LLMs can be used to improve the overall quality of your game's writing.
  • +
+

Some Background

+

What is LLM?

+

LLM, or in other words, Large Language Models, are models that have been trained on a massive dataset of text and code.

+

What is GPT?

+

GPT stands for Generative Pre-trained Transformer. GPT is a form of LLM. GPT can be used to generate text, translate languages, write different kinds of creative content, and answer your questions in an informative way.

+

Why is GPT gaining so much attention?

+

GPT is gaining so much attention because it is one of the most powerful and versatile language models ever created. It can be used for a wide variety of tasks, including generating realistic and engaging dialogue, creating complex and memorable characters, and writing new content for games.

+

Is GPT used instead of LLMs?

+

GPT is a type of LLM, so it is not used instead of LLMs. However, GPT is often preferred over other LLMs because it is very easy to use, since it is available through a public API from OpenAI (GPT 3.5+).

+

Why does this guide mostly focus on LLMs?

+

This guide mostly focuses on LLMs because LLM modding is quite a new topic nowadays, and it shares some common key points that you need to follow regardless of the game you are modding.

+

How to use neural networks without using GPT or any LLM?

+

There are many ways to use neural networks without using GPT or any LLM. For example, you can use neural networks to classify images, generate music, or translate languages. +To use a neural network, you will need to train it on a dataset of data. If you want to use a neural network to classify images, you will need to train it on a dataset of images. Once the neural network is trained, you can use it to make predictions on new data. For example, if you trained a neural network to classify images, you could use it to classify new images that you have never seen before.

+

What is a character engine?

+

Character engines help developers can drastically cut down the time, effort, and resources needed to create AI-driven NPCs. Essentially, it’s like a game engine but for generative AI character creation.

+

The Biggest Challenges of LLMs

+

LLMs face several significant challenges, including:

+
    +
  • Bias: LLMs can exhibit bias, reflecting the biases present in the data on which they are trained.
  • +
  • Safety: LLMs can be used to generate harmful content, such as hate speech or misinformation.
  • +
  • Cost: Training and deploying LLMs can be expensive.
  • +
+

Why Training Your Own Neural Network Can Be Challenging Due to Data and Knowledge

+

Training your own neural network can be challenging due to the requirements of data and knowledge. Neural networks need to be trained on a large amount of data, and collecting enough data for effective training can be difficult and expensive.

+

Additionally, it requires knowledge of machine learning and neural networks to successfully train your own neural network. If you lack this knowledge, training a neural network can be a challenging task.

+

Deciding

+

graph LR
+  A[Start] --> B{Is game support any type of moding?};
+  B -->|Yes| C[Do you know how to create mods that include any coding?];
+  C -->|No| E;
+  C -->|Yes| D[Does modding in the game allows connecting sockets or HTTP calls?];
+  D -->|No| E;
+  D -->|Yes| F[You can use LLMs];
+  B ---->|No| E[You can't use LLMs];
+Modding with LLM is not right for every game. Here are a few things to consider before deciding whether to mod your game with LLM:

+
    +
  • Is your game moddable? Not all games are moddable. Some games have mod support built-in, while others require third-party tools. If your game is not moddable, you will not be able to use LLM to mod it.
  • +
  • Does your game have a modding community? Not all games have a modding community, and even if they do, the community may not be active or supportive. If there is no modding community for your game, it will be more difficult to find help and support if you run into problems. Especially if you are not a seasoned modder for that game.
  • +
  • What are your goals? What do you hope to achieve by modding your game with LLM? Are you looking to improve the dialogue, add new characters, or create new content? Once you know your goals, you can start to think about the best way to use LLM to achieve them.
  • +
+

Double Checking

+

Before you start modding your game with LLM, it is important to double-check that you have all the necessary tools and resources. Here are a few things to check: +* Make sure that you have the latest version of LLM. LLM is constantly being updated, so it is important to make sure that you have the latest version. This is usually not under your control if you are using Online models - which can be good or bad depending on your goal. +* Make sure that you have a good understanding of how to use LLM. There are many tutorials and resources available online that can help you learn how to use LLM. If you are creating your own server with some version of LLM(Llama etc) then you should know how that works and tailor your API around that. Both of these requires some expertise. +* Make sure that you have a good understanding of the modding tools for your game. Each game has its own modding tools and process, so it is important to make sure that you understand how to use them. If you don't know how to use it, your first aim should be checking and learning that. Even if you are a seasoned modder on game X, it doesn't guarantee that you will be great at game Y.

+

Basics

+

To get started with LLM modding, you will need to know a few basic things: +* Prompt skills: LLM is trained on a massive dataset of text and code, but it still needs to be prompted in order to generate text. You will need to learn how to write effective prompts in order to get the best results from LLM. You can eliminate this requirement for certain services (Like Inworld AI's Character Engine) but if you are planning to use your own system, this is a must. +* Coding skills: Some LLM modding will require some coding skills. For example, you may need to write code to integrate LLM into your game or to create custom prompts.

+

Once you have a basic understanding of LLM and coding, you can start to experiment with modding your game. There are many ways to use LLM to mod your game, so be creative and have fun!

+

Here are some additional tips for LLM modding:

+
    +
  • Start small. Don't try to mod your entire game all at once. Start by modding a small part of your game, such as a single character or quest. This will help you to learn the ropes and to identify any potential problems.
  • +
  • Test often. Once you have made some changes to your game, be sure to test them thoroughly. This will help you to identify any bugs or problems that you may have created.
  • +
  • Get feedback from others. Once you have tested your changes, share them with others and get their feedback. This will help you to identify any areas where your mod can be improved.
  • +
+

LLM modding can be a lot of fun, and it can be a great way to improve your games. With a little effort, you can create mods that will make your games more enjoyable for yourself and for others.

+ + + + + + +
+
+ + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/201.html b/201.html new file mode 100644 index 0000000..20fb084 --- /dev/null +++ b/201.html @@ -0,0 +1,563 @@ + + + + + + + + + + + + + + + + + + + + + + + + LLM Modding 201 - LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ + + + +

LLM Modding 201

+
+ Cover Image +
+ +

Local, Online, or Service Models?

+

When it comes to modding with LLMs, you have multiple options. Though this classification might not be satisfying for some, I want to classify them as such, and here are some details about each:

+
    +
  • Local LLM Models: These are models that run on consumer-grade PCs that don't require any connection to the internet, and the entire computation happens on consumer runtime.
  • +
  • Online LLM Models: These are models that you need to run online, either because you cannot run them on consumer hardware due to hardware limitations or legal limitations.
  • +
  • Service LLM Models: These are models that are specialized in certain fields and expose an API for developers to utilize, which takes some cumbersome aspects of LLM systems out of the equation (Example: Inworld AI).
  • +
+

You probably might have found some models that are a mixture of these categories as well, but there is no need to create a separate category for them. In the following section, I will try to explain all of these category models in detail to the best of my knowledge by laying out the pros and cons of each.

+

About Local Models

+

High Level Architecture Type

+

Local LLM Diagram

+

Pros:

+

Local models are great in a way that they usually don't require a constant internet connection. This is beneficial for users who are concerned about privacy. Moreover, most of the models can be run without any restrictions, allowing less-censored models to be run on mods - which can be great depending on the type of mod concept you have in mind (for example, violence isn't approved by many AI models unless you strip some guard rails). They are also free, given that everything will happen locally, so users don't have to pay anything.

+

Cons:

+

Often, these local models come in two qualities - models with large parameters and models with small parameters. Large parameter models often require very high-tier hardware to run (like at least 100sGB of RAM and such) and they also take up a very large amount of storage on the hardware. This, as you can expect, isn't appealing to every mod user at the moment, and you would only target a fraction of the player base as mod users. For small parameter models, however, they require less powerful machines in most cases. However, they still require around 16GB of RAM, a good GPU, and fairly large storage. Unfortunately, the quality of the answers from these small parameter models is also very questionable (at least from what I have observed, they are not good). You can find GPT-Q and GGML versions of the models, which can help based on consumer specifications, but still, you need good-tier hardware in each category. GPT-Q is for CUDA inference models (basically GPU) and GGML is designed for CPU. Moreover, there are models that can run on consumer hardware, where it requires 4GB VRAM or 16GB RAM, and you might say "Great, so it works," but you would forget the fact that running the models isn't the only requirement. We need to run the models and the game at the same time, and doing this without impacting game performance (due to limited RAM/VRAM) requires high-tier hardware, which most people do not own. Also, setting up these local models often requires installing a lot of auxiliary software onto the player's hardware, which increases the steps they need to complete before enjoying their mod. Given that most of the mod users won't be software developers, they will have a hard time setting up their environments like you can, which will decrease the number of players who can enjoy your mod. Moreover, all the local models are missing any side benefits that Online or Service models offer, such as TTS/STT or action systems, voices, etc. You need to learn LLM prompting for maximum efficiency so that your mod calls the local model in that structure to get the best answers.

+

About Online Models

+

High Level Architecture Type

+

Online Model Diagram

+

Pros:

+

Online models can have two sub-categories: ready-to-use online models, such as OpenAI's API, or custom online models, such as running local models on your cloud provider and exposing that API to modders. Both of these options have a common advantage: they take the execution burden off consumer hardware. This means that regardless of their PC specs, as long as they can play the mod, they should be able to use LLMs as well. Also, they are often easier for users to set up because, as a mod creator, you will just call the API, and they won't need to do anything extra. From an update perspective, it's also easier in the sense that you wouldn't need to push GBs of data as an update when a better version is released; you could simply update on the server or, if you are using a ready-to-use model, it would update automatically.

+

Cons:

+

The user requires an internet connection to use it - meaning that a constant internet connection is a must. For ready-to-use online models, they are often not free and require a subscription. In other words, users need to pay for usage, and it requires signing up to a page and doing some extra work on their UI, which is not preferred by many users because it's an extra step. For custom online models, you (as the mod developer) need to rent a VM from a cloud provider with very beefy hardware and follow all the local model steps explained above. Additionally, you need to write your own API interface so that you can handle incoming calls and redirect them to your local model processor and send the response back to the caller. As you may guess, this is not economically viable for mod creators, since running such a server can cost a lot of money. Plus, now you basically have to learn how to write a performant web API - which is more of a job-related skill than a hobby-modding skill. Also, you still need to learn LLM prompting for maximum efficiency so that your mod calls the local model in that structure to get the best answers. Similar to local models, most of the online models don't come with any extra features such as TTS/SST and emotions, etc.

+

About Service Models

+

High Level Architecture Type

+

Service Model Diagram

+

Pros:

+

Service models are often specialized for creating characters for conversational purposes, meaning that you require little to no prompting skills to use these services. This, even though it sounds trivial, removes a huge workload from the shoulders of the developers. Similar to online models, they also eliminate cumbersome installation steps because no local installation is required for the users. The overall architecture will be simpler for the developers as it's just another API call. Additionally, since these services are maintained by professional companies, they often come with their own SDK that abstracts away the gritty implementation details depending on your use case. Moreover, similar to online models, service models remove the burden of execution from the player's hardware, allowing everyone to use LLMs regardless of their hardware power. While not all service models offer this, character engines like Inworld AI offer other features such as TTS/SST, Elevenlabs integration, emotions, memory, performance, and more out of the box, significantly enriching the mod's capabilities with LLM. Due to the nature of service models, they are more cost-aware compared to online models, considering end users as their target audience, unlike online models, where the target audience is developers. The signup, payment, and setup processes of service models are often designed with a customer-first mindset, making user adoption easier due to their familiar UI/UX pages. Service models do not require any effort from mod developers since they don't need to set up their servers or pay for infrastructure, but simply use the service endpoints, significantly easing development for mod creators.

+

Cons:

+

Similar to online models, users need to be connected to the internet to use service models, which is not preferred by some users. Service models often require paid subscriptions, although services like Inworld offer Free tiers for the majority of use cases. Regardless, these systems require signup, which is an extra step for users.

+ + + + + + +
+
+ + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/301.html b/301.html new file mode 100644 index 0000000..ac52e68 --- /dev/null +++ b/301.html @@ -0,0 +1,601 @@ + + + + + + + + + + + + + + + + + + + + + + + + LLM Modding 301 - LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ + + + +

LLM Modding 301

+
+ Cover Image +
+ +

Selecting Your Model or Service

+

When it comes to selecting your model or service, we have multiple options nowadays. Moreover, after the completion of this document, more options will likely appear, so I suggest using this list as a snapshot of today rather than a fully up-to-date list. If you are unsure about what service or online models are, please visit LLM Modding 201 to get a gist of it.

+
+ +

Possible Choices as of October 2023

+

Local Models

+
+ Brands +
+

There are A LOT of local models, mostly derived from base models with fine-tuning. Here, I will list the primary base models:

+
    +
  • +

    Falcon: +Falcon is a series of generative large language models (LLMs) developed by the Technology Innovation Institute (TII) in Abu Dhabi. Falcon models use multiquery attention and a custom data pipeline to achieve high performance and scalability. Falcon models can generate text across various domains and tasks.

    +
  • +
  • +

    LLaMA: +LLaMA is an acronym for Large Language Model Meta AI, a series of foundational large language models (LLMs) released by Meta (formerly Facebook). LLaMA models are trained on a large set of unlabeled data from 20 languages with Latin and Cyrillic alphabets. LLaMA models use rotary position embeddings and parallel computation to improve efficiency and versatility. LLaMA 2 became open-source quite recently.

    +
  • +
  • +

    MPT: +MPT is an acronym for MosaicML Pretrained Transformer, a series of large language models (LLMs) developed by MosaicML, a platform for building and deploying machine learning models. MPT models use a modified transformer architecture with ALiBi (Attention with Linear Biases) and FlashAttention to eliminate context length limits and optimize speed. MPT models are trained on a mix of text and code data and can be fine-tuned for various tasks.

    +
  • +
  • +

    GPT-J: +GPT-J is an open-source large language model (LLM) developed by EleutherAI in 2021. It is a generative pre-trained transformer model designed to produce human-like text that continues from a prompt. It has 6 billion parameters and uses dense attention, rotary position embeddings, and parallel computation. It was trained on the Pile dataset, which contains text from various sources and domains.

    +
  • +
  • +

    GPT-Neo: +An open-source replication of GPT-3 with 2.7 billion parameters that can generate text across various domains and tasks. GPT-Neo is an open-source large language model (LLM) developed by EleutherAI in 2021. It is a model parallel GPT-2 and GPT-3-style model that uses the mesh-tensorflow library. It can generate text across various domains and tasks, such as natural language understanding, natural language generation, and conversational AI. It has two versions: one with 1.3 billion parameters and another with 2.7 billion parameters. It uses local attention in every other layer with a window size of 256 tokens. It was trained on the Pile dataset, which contains text from 26 diverse sources, such as books, news, Wikipedia, and code.

    +
  • +
+

Apart from these base models, Hugging Face hosts a plethora of open-source fine-tuned models for almost each of these base models. You can find them here.

+
+ +

Online Models

+
+ Brands +
+

I will only list online models that can be used via an API. This means Bard or Bing Chat won't be part of this list.

+
    +
  • +

    OpenAI: OpenAI offers a variety of products and services, such as GPT-4, ChatGPT 3.5 Turbo, and other tools like DALL·E, a generative model that creates images from text descriptions, and OpenAI Whisper, which transcribes audio into text (great for STT transformation). The OpenAI API can be used for our LLM modding purposes, provided the user provides their credentials or API Key to communicate with the servers.

    +
  • +
  • +

    MosaicML: MosaicML is a platform for building and deploying generative AI models on your data within your secure environment. MosaicML offers the MPT Foundation Series, a series of open-source, commercially-licensed LLMs that can be used out of the box or fine-tuned on your data. MosaicML Inference is a service that allows you to securely deploy LLMs for up to 15x cost savings, and MosaicML Training is a service that enables you to pretrain or finetune your own state-of-the-art models with a single command and orchestrate across multiple clouds.

    +
  • +
  • +

    DeepInfra: DeepInfra is a serverless inference service that provides access to a variety of LLMs and embeddings models. You can use Llama 2, GPT-J, GPT-Neo, and Falcon models there as API endpoints.

    +
  • +
  • +

    Replicate: Replicate is a platform that lets you run open-source machine learning models with a cloud API. Replicate has a community of machine learning enthusiasts who have shared thousands of models, including language models, video creation and editing models, super resolution models, image restoration models, image-to-text models, and text-to-image models. Replicate also offers Cog, an open-source tool that lets you package machine learning models in a standard, production-ready container. You can run Llama2, GPT-J, and Falcon in Replicate as well.

    +
  • +
+
+ +

Service Models

+
+ Brands +
+

I will list only the service models that I know, whether by name or by experience, but this is by no means a full list. Feel free to make a pull request if you want to extend this list.

+
    +
  • +

    Inworld AI: +Inworld AI is the leading Character Engine for AI NPCs. It empowers non-player characters (NPCs) in games and virtual worlds with intelligent dialogue, making them more intelligent and humanized, and increasing their ability to interact with users. When you use Inworld, out-of-the-box you get LLM character support, text-to-speech with multiple realistic voices, speech-to-text support for microphone transcribe conversation, emotions, and an action system (for making mods interactive). Inworld also offers all these for free in their free tier, which any user can use without even providing credit card information. The free tier gives 5,000 free API interactions per month, which is enough for any mod (based on my experience). They also offer unlimited in-studio interaction, allowing users to talk or adjust certain things on their portal without paying anything extra. They have multiple SDKs for certain game engines, which may not be super helpful for modders, but they also have a Node.js SDK and direct endpoint calls that can be utilized easily. They also provide lipsync data if your game supports it. Not only that, but they also have seamless elevenlabs support for the voices, in case you have high-quality voices on elevenlabs, they can be used easily.

    +
  • +
  • +

    ChatFAI: +ChatFAI is an AI-powered chatbot platform that allows users to engage in conversations with their favorite characters from movies, TV shows, books, and more. It uses natural language processing algorithms to generate responses to user input. They support custom character generation. They also have a free plan; however, their free plan is not usable for actual mod usage (as of September 2023) because it provides only 250 messages per month, which is quite limited.

    +
  • +
  • +

    character.ai: +character.ai is a company that brings to life the science-fiction dream of open-ended conversations and collaborations with computers. It is a chatbot web application with a neural language model that can produce text responses that sound like those of real people and engage in natural conversation. It can be used for imagination, brainstorming, and language learning. It is technically free upon sign-up and doesn't seem to have a message limit. They provide the c.ai+ model, which offers faster response times and priority access (because some characters require a waiting room if they are too high in demand). Unfortunately, they don't provide an official API, and you need to use an open-source unofficial version, which can break at any time, making it less suitable for long-term support mods. They don't have any TTS/SST system.

    +
  • +
  • +

    convai: +Convai is really similar to Inworld AI; however, they don't seem to have the same features as Inworld does. Currently, they offer a free tier as well, but the limit might not be enough for everyone, as it's a per-day 100 interaction quota. Each message is considered one interaction. This can limit certain usages for many mods. They also provide SST/TTS like Inworld, and convai seems to have better voice quality overall. They also provide certain plugins to game engines like Inworld, and they provide a direct character creation endpoint as well (which is a pending feature on Inworld). They are currently partnered with Nvidia, which is important to note.

    +
  • +
  • +

    Kamoto.AI: +Kamoto.AI empowers celebrities, influencers, and users to create, train, and monetize bespoke AI Characters. Unfortunately, they don't seem to be providing any API, so you probably need to write your own unofficial package, which is often a ton of work.

    +
  • +
  • +

    NPCx: +NPCx is a global team of computer engineers, data scientists, artists, and animators using next-generation Artificial Intelligence (AI) technology to support the digital storytellers of our time. They focus on Non-Player Characters (NPCs) in video games and aim to provide richer, more diverse, and lifelike 3D experiences at a fraction of the time and cost. Not much information is available aside from this. They don't have public sign-up and require you to contact them. Not exactly usable in this instance as of September 2023 but looks promising.

    +
  • +
+
+ +

Why Inworld Makes Sense?

+

Based on my experience as a mod owner, I can confidently say that many people lack the time or inclination to read through lengthy installation steps. Many ignore the entire description and attempt to install the mod directly. In such a situation, the last thing you want is to add a lot of complicated installation steps that users might not complete or realize after completion that their hardware isn't powerful enough. More steps == more bugs, which means more work for the mod owner. Considering that I'm not willing to pay high cloud computing fees, local models are not an option for me. The next choice is online models, but these require pretraining the models for better responses. They are often designed for developers, making the sign-up/setup process unattractive for average players. Given these conditions, service models become the most logical choice.

+

From the list, Inworld stands out with its free tier and feature pairing. I must admit that I'm biased here, as I have used Inworld in many of my mods, and they have given me a free developer account for several months. However, my mods have been downloaded and played by thousands of people, and I know for sure that most of them have enjoyed it completely free, without having to add their credit card details anywhere. Knowing that Inworld allows this flexibility to players is one of the main reasons why I choose to move forward with Inworld. In the next chapter, we will talk about details on using Inworld.

+ + + + + + +
+
+ + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/401.html b/401.html new file mode 100644 index 0000000..34571ce --- /dev/null +++ b/401.html @@ -0,0 +1,603 @@ + + + + + + + + + + + + + + + + + + + + + + LLM Modding 401 - LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ + + + +

LLM Modding 401

+
+ inworld +
+ +

Why Inworld?

+

In case you want to know why this section is moving forward with Inworld AI, please have a look at the 301 section to see the comparison between services and possible approaches. When all the pros and cons are laid out, I believe Inworld emerges as the best option, and this is the reason why I have used Inworld in almost all of my production mods.

+

Understanding Inworld

+

At first glance, you might ask yourself, "How can I use this in my mod while Inworld's primary target audience seems to be game developers?" And you would be right to think like that. Technically, Inworld's main aim seems to be a one-dev subscription that all users can use without seeing Inworld at all. However, as you can guess, this is economically not viable for any mod creator unless you charge your users, which turns mods into more of a subscription-based DLC than a mod. I won't go into the pricing details of Inworld in this section since they are always gathering feedback from the customers and updating their pricing accordingly. Hence, there is a high chance that at the time of you reading this, Inworld AI's pricing can be even more affordable than the current system. But overall, Inworld's pricing policy is user-friendly enough that you can let users create an account and use it for a considerable amount of time for completely free.

+

Below, I will list pros and cons. However, this won't be a rehashing of the previous 301 section; rather, I will solely focus on DevEx here.

+

Pros

+

One Service to Rule Them All approach: Provides nearly all the required tools in their featureset, so you don't need to sign up for different services one by one.

+

Non-Alienating UX/UI: Even though they mainly focus on Developers/Game Developers, their UI/UX encourages regular users to play around and get familiar with the system. This is not a direct benefit to you as a mod developer, but indirectly, it helps a lot because it removes a lot of "how can I do this and that" questions.

+

Pricing: It might not be fully free, but it's definitely free enough to develop and serve to players. It's also very easy for players to upgrade their account for more interaction time without needing any change from the mod developer.

+

Engagement: In case you have any questions, in their Discord channel, devs are actually engaging with you. This is extra good for those who are new to LLM modding. They help people from LLM prompting guides to technical stuff.

+

Cons

+

Protocol and SDKs: The selected protocol (gRPC) isn't a great fit for mods that are already somewhat limited in terms of their tech-stack. Also, the SDKs are mainly focused on popular game engines such as Unreal or Unity, but 95% of the mods don't have direct interaction with these engines, even if the game is made with those engines.

+

Missing APIs: Unfortunately, Inworld is missing some very important APIs, such as creating, updating, or deleting characters/brains via API or SDK call. However, I know Inworld is aware of that, and they have already started to work on this, so by the time you are reading this, very likely this won't be an issue anymore.

+


+
+
+ inworld +
+ +

Getting Started with Inworld

+

Thanks to their pricing scheme and login system, testing out Inworld is super easy. Just head to inworld.ai and create your account by clicking on "Get Started." From there, Inworld will provide you with a workspace that includes certain characters as demo characters.

+

I would strongly suggest interacting with them first to get a feel for the entire experience. Once you feel like you've had enough interaction, check out their descriptions, goals, and more. Unlike other models, Inworld doesn't expect you to compose a big descriptive paragraph meticulously crafted over days. Instead, they separate the concerns and points into different sections so you can fill them out in a more organized manner. Moreover, Inworld does an excellent job with their character creation UI by distinguishing basic and advanced concepts. For example, the core description is a basic feature that all characters need to have, whereas personality and emotions are more advanced features than a basic character needs.

+

To provide a bit of information about each section briefly:

+
    +
  • +

    Core Description: This is the basic structure of your character, including their history, current situation, and personality traits. This description is crucial and is taken very seriously by the LLM. It's wise not to include temporary information in this section because, in a way, this description is etched into the soul of the character.

    +
  • +
  • +

    Flaws: These represent the character's weaknesses and vulnerabilities, along with motivations. These can be used to deepen the character you are creating.

    +
  • +
  • +

    Dialogue Style: Inworld provides a bunch of very useful options if you don't want to handcraft every character's dialogue. However, if you want to get serious, you should add a custom dialogue style. Based on my observations, it consistently yields the best responses.

    +
  • +
  • +

    Voice Parameters: This is probably the most understandable section. One thing to note is that it comes with out-of-the-box Elevenlabs integration. This means that if you want (or if the player wants), they can clone or use whatever Elevenlabs voice they have and integrate it here. When voice data is passed through, it will use Elevenlabs in this case.

    +
  • +
+

Moving on to the advanced features: Personality, Knowledge, Goals, Scenes, and Relationships.

+
    +
  • +

    Personality: As the name suggests, this section is related to the personality of our characters. Here, you can make the character sound more negative, joyful, feared, and so on. The emotional engine within Inworld is controlled by Personality, shaping how a character behaves by defining the range of their emotions using adjectives and sliders.

    +
  • +
  • +

    Knowledge: Answers to user inquiries are provided by Facts and Knowledge. Character-specific information falls under Personal Knowledge, while Common Knowledge is shared across multiple characters, aiding in world creation. They are important if your characters are not based in the real world. You still cannot fully "isolate" the AI by adding a lot of common knowledge, but the more information you put, the better adapted answers you will get.

    +
  • +
  • +

    Goals: This feature is exceptionally powerful, enabling the triggering of specific actions using predefined words or intents. I highly recommend exploring their documentation for more details.

    +
  • +
  • +

    Scenes: I haven't fully grasped its potential and haven't utilized it much. Essentially, it provides characters with a sense of their current location. Since my modifications mostly focused on dynamic settings, Scenes didn't prove very useful for me. However, if you're concentrating on static scenes, it's worth delving into.

    +
  • +
  • +

    Relationships: Relationship is a new feature set to allow for the development of relationships between NPCs and players across different gaming sessions. Basically, it means "progressive" relationship between player and character.

    +
  • +
+

For more details, you can check out their documentation.

+

Architecture

+
+

Note

+

If your game modding supports proper NDK integration, and if you are experienced in NDK development, please check out the Inworld NDK development kit. It could be 10x more efficient than the architecture described here. See inworld-ai/inworld-ndk.

+
+

Usually, games do not allow running different DLLs in their environment unless you know what you are doing and mod the core of the game all the way down. This is why it's often better to use a sidecar approach.

+

If you have played with my mods before, you probably noticed that it always requires you to see a "terminal" pop up in the background before starting the game. The main reason for that is that this "terminal" is basically a packaged Node.js socket server utilizing the existing Inworld SDK. Of course, depending on your implementation and requirements, you can completely remove this requirement and integrate the mod directly into the game itself.

+

Inworld Integration Diagram

+

I believe the image above explains the architecture clearly. However, to give a little more context: +The game never interacts with the Inworld AI system directly; it uses the "Relayer Application" as a proxy to perform its actions. In the diagram, the Relayer Application is shown to be using a socket layer; however, depending on restrictions in your mod, it can also be just a simple REST API. +As long as your sidecar is able to integrate the Inworld SDK, the rest is totally up to you. Technically, you can use named pipes to establish a connection between the application and the game. Or you can even use some custom format or makeshift solutions like writing to a file and reading from it on the application side. However, this should be the last resort since I/O operations are horribly slow and can cause unwanted lag in communication.

+

Another good aspect of the sidecar approach is that since it technically works like a separate process/application, it can work independently from the mod and can do more things. For example, if the game isn't allowing you to play sounds, you can handle this in the sidecar since it most likely will have a better chance of performing such operations. Moreover, you can also create your own small-scale database to store communication between the player and the system so that you may want to refer to that, keep some data for mod usage, and so on. The rest is really up to your imagination—go wild! :)

+

Here are some Inworld-powered mods and their accompanying source code, in case you’re interested:

+

Official Inworld NodeJS SDK Examples for both JS and TS. This should be your main entry point if you are not familiar with Inworld at all. Link

+

Bannerlord Mod using C# for the main Bannerlord mod + using a JS sidecar with a websocket layer and the Inworld NodeJS SDK. Link

+

Skyrim Mod using C++ for the main Skyrim mod, Papyrus Scripting for game-related modding, C# Audio system for playing the sounds (because I didn't want to do this on the Skyrim or Node.js side) + using the TypeScript version of the sidecar that's using a websocket layer and the Inworld NodeJS SDK. Link

+

The Inworld Discord channel provides a great way to engage with other developers. You can ask your questions and gather some community know-how. You don't need to reinvent the wheel. Link

+

Remarks

+

Inworld AI is a fantastic service, and thus far, I've had a lot of fun working with it. As we outlined in the previous 301 section and here, it comes with its pros and cons, but I would confidently say that the pros overwhelmingly outweigh the cons. Moreover, you can always suggest improvements to Inworld. That's one of the great aspects I appreciate about them—how accessible they are. When you have a suggestion to enhance the system, you can simply propose it, and they actually listen! Although, like any company, they have their own backlog items and need to evaluate how to implement them. But taking a pragmatic viewpoint, every valuable feature they add will benefit them in the long run. Therefore, they have practically no reason to turn down good suggestions. So, you can always rest assured that someone will work on it if it's deemed good enough for their backlog.

+

This entire page is dedicated to how you can create your own mod using LLMs. However, you can apply the same ideas and architecture to your own games as well. Of course, the systems might technically be different than what's detailed in this document, especially since non-proprietary game engines offer more flexibility than proprietary ones, where most modding usually occurs.

+

That's a wrap, folks! I hope this document has been helpful to some of you. I'm aware that there might be many other services and models that I didn't mention, which you might also find appealing. However, this entire write-up was based on my knowledge and experiences. If you'd like to contribute or have any suggestions, feel free to do so by creating a pull request. If you found this article valuable and if you are from another language, please help me to translate this to your language.

+ + + + + + +
+
+ + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/404.html b/404.html new file mode 100644 index 0000000..3322bb8 --- /dev/null +++ b/404.html @@ -0,0 +1,408 @@ + + + + + + + + + + + + + + + + + + LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ +

404 - Not found

+ +
+
+ + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 0000000..1cf13b9 Binary files /dev/null and b/assets/images/favicon.png differ diff --git a/assets/javascripts/bundle.220ee61c.min.js b/assets/javascripts/bundle.220ee61c.min.js new file mode 100644 index 0000000..116072a --- /dev/null +++ b/assets/javascripts/bundle.220ee61c.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Ci=Object.create;var gr=Object.defineProperty;var Ri=Object.getOwnPropertyDescriptor;var ki=Object.getOwnPropertyNames,Ht=Object.getOwnPropertySymbols,Hi=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,nn=Object.prototype.propertyIsEnumerable;var rn=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))yr.call(t,r)&&rn(e,r,t[r]);if(Ht)for(var r of Ht(t))nn.call(t,r)&&rn(e,r,t[r]);return e};var on=(e,t)=>{var r={};for(var n in e)yr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Ht)for(var n of Ht(e))t.indexOf(n)<0&&nn.call(e,n)&&(r[n]=e[n]);return r};var Pt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Pi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ki(t))!yr.call(e,o)&&o!==r&&gr(e,o,{get:()=>t[o],enumerable:!(n=Ri(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Ci(Hi(e)):{},Pi(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var sn=Pt((xr,an)=>{(function(e,t){typeof xr=="object"&&typeof an!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(xr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(O){return!!(O&&O!==document&&O.nodeName!=="HTML"&&O.nodeName!=="BODY"&&"classList"in O&&"contains"in O.classList)}function f(O){var Qe=O.type,De=O.tagName;return!!(De==="INPUT"&&s[Qe]&&!O.readOnly||De==="TEXTAREA"&&!O.readOnly||O.isContentEditable)}function c(O){O.classList.contains("focus-visible")||(O.classList.add("focus-visible"),O.setAttribute("data-focus-visible-added",""))}function u(O){O.hasAttribute("data-focus-visible-added")&&(O.classList.remove("focus-visible"),O.removeAttribute("data-focus-visible-added"))}function p(O){O.metaKey||O.altKey||O.ctrlKey||(a(r.activeElement)&&c(r.activeElement),n=!0)}function m(O){n=!1}function d(O){a(O.target)&&(n||f(O.target))&&c(O.target)}function h(O){a(O.target)&&(O.target.classList.contains("focus-visible")||O.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(O.target))}function v(O){document.visibilityState==="hidden"&&(o&&(n=!0),Y())}function Y(){document.addEventListener("mousemove",N),document.addEventListener("mousedown",N),document.addEventListener("mouseup",N),document.addEventListener("pointermove",N),document.addEventListener("pointerdown",N),document.addEventListener("pointerup",N),document.addEventListener("touchmove",N),document.addEventListener("touchstart",N),document.addEventListener("touchend",N)}function B(){document.removeEventListener("mousemove",N),document.removeEventListener("mousedown",N),document.removeEventListener("mouseup",N),document.removeEventListener("pointermove",N),document.removeEventListener("pointerdown",N),document.removeEventListener("pointerup",N),document.removeEventListener("touchmove",N),document.removeEventListener("touchstart",N),document.removeEventListener("touchend",N)}function N(O){O.target.nodeName&&O.target.nodeName.toLowerCase()==="html"||(n=!1,B())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),Y(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var cn=Pt(Er=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},s=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(B,N){d.append(N,B)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(O){throw new Error("URL unable to set base "+c+" due to "+O)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,Y=!0,B=this;["append","delete","set"].forEach(function(O){var Qe=h[O];h[O]=function(){Qe.apply(h,arguments),v&&(Y=!1,B.search=h.toString(),Y=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var N=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==N&&(N=this.search,Y&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},s=i.prototype,a=function(f){Object.defineProperty(s,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){a(f)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er)});var qr=Pt((Mt,Nr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Mt=="object"&&typeof Nr=="object"?Nr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Mt=="object"?Mt.ClipboardJS=r():t.ClipboardJS=r()})(Mt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return Ai}});var s=i(279),a=i.n(s),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var E=p()(T);return m("cut"),E},h=d;function v(j){var T=document.documentElement.getAttribute("dir")==="rtl",E=document.createElement("textarea");E.style.fontSize="12pt",E.style.border="0",E.style.padding="0",E.style.margin="0",E.style.position="absolute",E.style[T?"right":"left"]="-9999px";var H=window.pageYOffset||document.documentElement.scrollTop;return E.style.top="".concat(H,"px"),E.setAttribute("readonly",""),E.value=j,E}var Y=function(T,E){var H=v(T);E.container.appendChild(H);var I=p()(H);return m("copy"),H.remove(),I},B=function(T){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},H="";return typeof T=="string"?H=Y(T,E):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?H=Y(T.value,E):(H=p()(T),m("copy")),H},N=B;function O(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(E){return typeof E}:O=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},O(j)}var Qe=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=T.action,H=E===void 0?"copy":E,I=T.container,q=T.target,Me=T.text;if(H!=="copy"&&H!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&O(q)==="object"&&q.nodeType===1){if(H==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(H==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Me)return N(Me,{container:I});if(q)return H==="cut"?h(q):N(q,{container:I})},De=Qe;function $e(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$e=function(E){return typeof E}:$e=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},$e(j)}function Ei(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function tn(j,T){for(var E=0;E0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof I.action=="function"?I.action:this.defaultAction,this.target=typeof I.target=="function"?I.target:this.defaultTarget,this.text=typeof I.text=="function"?I.text:this.defaultText,this.container=$e(I.container)==="object"?I.container:document.body}},{key:"listenClick",value:function(I){var q=this;this.listener=c()(I,"click",function(Me){return q.onClick(Me)})}},{key:"onClick",value:function(I){var q=I.delegateTarget||I.currentTarget,Me=this.action(q)||"copy",kt=De({action:Me,container:this.container,target:this.target(q),text:this.text(q)});this.emit(kt?"success":"error",{action:Me,text:kt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(I){return vr("action",I)}},{key:"defaultTarget",value:function(I){var q=vr("target",I);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(I){return vr("text",I)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(I){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return N(I,q)}},{key:"cut",value:function(I){return h(I)}},{key:"isSupported",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof I=="string"?[I]:I,Me=!!document.queryCommandSupported;return q.forEach(function(kt){Me=Me&&!!document.queryCommandSupported(kt)}),Me}}]),E}(a()),Ai=Li},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,f){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(f))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof m=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return a(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(m))return c(m,d,h);if(s.nodeList(m))return u(m,d,h);if(s.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return a(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),s=f.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var f=this;function c(){f.off(i,c),s.apply(a,arguments)}return c._=s,this.on(i,c,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=a.length;for(f;f{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var rs=/["'&<>]/;Yo.exports=ns;function ns(e){var t=""+e,r=rs.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||a(m,d)})})}function a(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof et?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){a("next",m)}function u(m){a("throw",m)}function p(m,d){m(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function pn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Ee=="function"?Ee(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,f){s=e[i](s),o(a,f,s.done,s.value)})}}function o(i,s,a,f){Promise.resolve(f).then(function(c){i({value:c,done:a})},s)}}function C(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var It=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Ee(s),f=a.next();!f.done;f=a.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var u=this.initialTeardown;if(C(u))try{u()}catch(v){i=v instanceof It?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=Ee(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{ln(h)}catch(v){i=i!=null?i:[],v instanceof It?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new It(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)ln(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Sr=Ie.EMPTY;function jt(e){return e instanceof Ie||e&&"closed"in e&&C(e.remove)&&C(e.add)&&C(e.unsubscribe)}function ln(e){C(e)?e():e.unsubscribe()}var Le={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Sr:(this.currentObservers=null,a.push(r),new Ie(function(){n.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new xn(r,n)},t}(F);var xn=function(e){ie(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Sr},t}(x);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ie(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,f=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Wt);var Sn=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Dt);var Oe=new Sn(wn);var M=new F(function(e){return e.complete()});function Vt(e){return e&&C(e.schedule)}function Cr(e){return e[e.length-1]}function Ye(e){return C(Cr(e))?e.pop():void 0}function Te(e){return Vt(Cr(e))?e.pop():void 0}function zt(e,t){return typeof Cr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Nt(e){return C(e==null?void 0:e.then)}function qt(e){return C(e[ft])}function Kt(e){return Symbol.asyncIterator&&C(e==null?void 0:e[Symbol.asyncIterator])}function Qt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function zi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yt=zi();function Gt(e){return C(e==null?void 0:e[Yt])}function Bt(e){return un(this,arguments,function(){var r,n,o,i;return $t(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,et(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,et(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,et(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Jt(e){return C(e==null?void 0:e.getReader)}function U(e){if(e instanceof F)return e;if(e!=null){if(qt(e))return Ni(e);if(pt(e))return qi(e);if(Nt(e))return Ki(e);if(Kt(e))return On(e);if(Gt(e))return Qi(e);if(Jt(e))return Yi(e)}throw Qt(e)}function Ni(e){return new F(function(t){var r=e[ft]();if(C(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function qi(e){return new F(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?A(function(o,i){return e(o,i,n)}):de,ge(1),r?He(t):Dn(function(){return new Zt}))}}function Vn(){for(var e=[],t=0;t=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new x}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,f=a===void 0?!0:a;return function(c){var u,p,m,d=0,h=!1,v=!1,Y=function(){p==null||p.unsubscribe(),p=void 0},B=function(){Y(),u=m=void 0,h=v=!1},N=function(){var O=u;B(),O==null||O.unsubscribe()};return y(function(O,Qe){d++,!v&&!h&&Y();var De=m=m!=null?m:r();Qe.add(function(){d--,d===0&&!v&&!h&&(p=$r(N,f))}),De.subscribe(Qe),!u&&d>0&&(u=new rt({next:function($e){return De.next($e)},error:function($e){v=!0,Y(),p=$r(B,o,$e),De.error($e)},complete:function(){h=!0,Y(),p=$r(B,s),De.complete()}}),U(O).subscribe(u))})(c)}}function $r(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function z(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),V(e===_e()),J())}function Xe(e){return{x:e.offsetLeft,y:e.offsetTop}}function Kn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>Xe(e)),V(Xe(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>rr(e)),V(rr(e)))}var Yn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Wr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),va?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Wr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ba.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Gn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Jn=typeof WeakMap!="undefined"?new WeakMap:new Yn,Xn=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=ga.getInstance(),n=new La(t,r,this);Jn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Xn.prototype[e]=function(){var t;return(t=Jn.get(this))[e].apply(t,arguments)}});var Aa=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:Xn}(),Zn=Aa;var eo=new x,Ca=$(()=>k(new Zn(e=>{for(let t of e)eo.next(t)}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ye(e){return Ca.pipe(S(t=>t.observe(e)),g(t=>eo.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(()=>he(e)))),V(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var to=new x,Ra=$(()=>k(new IntersectionObserver(e=>{for(let t of e)to.next(t)},{threshold:0}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function sr(e){return Ra.pipe(S(t=>t.observe(e)),g(t=>to.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function ro(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),J())}var cr={drawer:z("[data-md-toggle=drawer]"),search:z("[data-md-toggle=search]")};function no(e){return cr[e].checked}function Ke(e,t){cr[e].checked!==t&&cr[e].click()}function Ue(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),V(t.checked))}function ka(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ha(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(V(!1))}function oo(){let e=b(window,"keydown").pipe(A(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:no("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),A(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!ka(n,r)}return!0}),pe());return Ha().pipe(g(t=>t?M:e))}function le(){return new URL(location.href)}function ot(e){location.href=e.href}function io(){return new x}function ao(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)ao(e,r)}function _(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)ao(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function so(){return location.hash.substring(1)}function Dr(e){let t=_("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Pa(e){return L(b(window,"hashchange"),e).pipe(l(so),V(so()),A(t=>t.length>0),X(1))}function co(e){return Pa(e).pipe(l(t=>ce(`[id="${t}"]`)),A(t=>typeof t!="undefined"))}function Vr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function fo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(V(e.matches))}function zr(e,t){return e.pipe(g(r=>r?t():M))}function ur(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(fe(()=>M),g(r=>r.status!==200?Ot(()=>new Error(r.statusText)):k(r)))}function We(e,t){return ur(e,t).pipe(g(r=>r.json()),X(1))}function uo(e,t){let r=new DOMParser;return ur(e,t).pipe(g(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),X(1))}function pr(e){let t=_("script",{src:e});return $(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(g(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),R(()=>document.head.removeChild(t)),ge(1))))}function po(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function lo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(po),V(po()))}function mo(){return{width:innerWidth,height:innerHeight}}function ho(){return b(window,"resize",{passive:!0}).pipe(l(mo),V(mo()))}function bo(){return G([lo(),ho()]).pipe(l(([e,t])=>({offset:e,size:t})),X(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(ee("size")),o=G([n,r]).pipe(l(()=>Xe(e)));return G([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:f,y:c}])=>({offset:{x:s.x-f,y:s.y-c+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,f,c)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:f,error:c});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(` + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + + + + + + +
+
+ + + + +

LLM Modding 101

+
+ Cover Image +
+ +

Einführung

+

In diesem Abschnitt werde ich die Grundlagen des Modding mit LLM diskutieren. Einige Teile könnten zu offensichtlich sein, um sie zu erwähnen, aber da dies eher eine allgemeine Anleitung ist, denke ich, dass ich fast alles erwähnen sollte, was mir in den Sinn kommt. Für die "Duh"-Teile, fühlen Sie sich frei zu überspringen und weiterzulesen.

+

Modding mit LLM ist eine ausgezeichnete Möglichkeit, um Ihren Spielen lebensechtere Gespräche und unvergessliche Momente hinzuzufügen. LLMs können verwendet werden, um Dialoge, Beschreibungen und sogar ganze Geschichten zu generieren. Sie können auch dazu verwendet werden, um neue Charaktere, Orte und Quests zu erstellen.

+

Hier sind einige der Vorteile des Modding mit LLMs:

+
    +
  • LLMs können realistischere und ansprechendere Dialoge generieren als traditionelle Skriptmethoden.
  • +
  • LLMs können komplexe und unvergessliche Charaktere kreieren, die die Spieler lieben werden.
  • +
  • LLMs können verwendet werden, um neuen Inhalt für Ihr Spiel zu generieren, wie Geschichten, Quests und Orte.
  • +
  • LLMs können verwendet werden, um die allgemeine Qualität des Schreibens in Ihrem Spiel zu verbessern.
  • +
+

Einige Hintergrundinformationen zu LLMs

+

Was ist LLM?

+

LLM, oder in anderen Worten, Large Language Models, sind Modelle, die auf einem riesigen Datensatz von Text und Code trainiert wurden.

+

Was ist GPT?

+

GPT steht für Generative Pre-trained Transformer. GPT ist eine Form von LLM. GPT kann verwendet werden, um Text zu generieren, Sprachen zu übersetzen, verschiedene Arten von kreativen Inhalten zu schreiben und Ihre Fragen auf informative Weise zu beantworten.

+

Warum bekommt GPT so viel Aufmerksamkeit?

+

GPT bekommt so viel Aufmerksamkeit, weil es eines der leistungsstärksten und vielseitigsten Sprachmodelle ist, die jemals erstellt wurden. Es kann für eine Vielzahl von Aufgaben verwendet werden, einschließlich der Generierung von realistischen und ansprechenden Dialogen, der Erstellung von komplexen und unvergesslichen Charakteren und dem Schreiben von neuem Inhalt für Spiele.

+

Wird GPT anstelle von LLMs verwendet?

+

GPT ist eine Art von LLM, daher wird es nicht anstelle von LLMs verwendet. Allerdings wird GPT oft anderen LLMs vorgezogen, da es sehr einfach zu bedienen ist, da es über eine öffentliche API von OpenAI (GPT 3.5+) verfügbar ist.

+

Warum konzentriert sich dieser Leitfaden hauptsächlich auf LLMs?

+

Dieser Leitfaden konzentriert sich hauptsächlich auf LLMs, da das Modding mit LLMs heutzutage ein recht neues Thema ist und einige gemeinsame Schlüsselpunkte aufweist, die man unabhängig vom Spiel, das man modded, befolgen muss.

+

Wie nutzt man neuronale Netzwerke ohne GPT oder irgendein LLM?

+

Es gibt viele Möglichkeiten, neuronale Netzwerke ohne GPT oder irgendein LLM zu nutzen. Zum Beispiel können Sie neuronale Netzwerke verwenden, um Bilder zu klassifizieren, Musik zu generieren oder Sprachen zu übersetzen. +Um ein neuronales Netzwerk zu nutzen, müssen Sie es auf einem Datensatz von Daten trainieren. Wenn Sie ein neuronales Netzwerk zur Bildklassifizierung nutzen möchten, müssen Sie es auf einem Datensatz von Bildern trainieren. Sobald das neuronale Netzwerk trainiert ist, können Sie es verwenden, um Vorhersagen über neue Daten zu treffen. Zum Beispiel könnten Sie, wenn Sie ein neuronales Netzwerk zur Bildklassifizierung trainiert haben, es verwenden, um neue Bilder zu klassifizieren, die Sie noch nie zuvor gesehen haben.

+

Was ist ein Charaktermotor?

+

Charaktermotoren helfen Entwicklern dabei, die benötigte Zeit, den Aufwand und die Ressourcen für die Erstellung KI-gesteuerter NPCs drastisch zu reduzieren. Im Wesentlichen ist es wie eine Spiel-Engine, aber für die generative KI-Charaktererstellung.

+

Die größten Herausforderungen der LLMs

+

LLMs stehen vor mehreren bedeutenden Herausforderungen, darunter:

+
    +
  • Bias: LLMs können Bias aufweisen, der die in den Daten, auf denen sie trainiert wurden, vorhandenen Vorurteile widerspiegelt.
  • +
  • Sicherheit: LLMs können dazu verwendet werden, schädliche Inhalte zu generieren, wie Hassreden oder Fehlinformationen.
  • +
  • Kosten: Das Training und die Bereitstellung von LLMs können teuer sein.
  • +
+

Warum das Training Ihres eigenen neuronalen Netzwerks aufgrund von Daten und Wissen herausfordernd sein kann

+

Das Training Ihres eigenen neuronalen Netzwerks kann aufgrund der Anforderungen an Daten und Wissen herausfordernd sein. Neuronale Netzwerke müssen auf einer großen Menge von Daten trainiert werden, und das Sammeln von genügend Daten für ein effektives Training kann schwierig und teuer sein.

+

Außerdem erfordert es Kenntnisse in Maschinenlernen und neuronalen Netzwerken, um erfolgreich Ihr eigenes neuronales Netzwerk zu trainieren. Wenn Sie dieses Wissen nicht haben, kann das Training eines neuronalen Netzwerks eine herausfordernde Aufgabe sein.

+

Wie Sie entscheiden können, ob Sie LLMs verwenden können?

+

graph LR
+  A[Start] --> B{Unterstützt das Spiel irgendeine Art von Modding?};
+  B -->|Ja| C[Können Sie Mods erstellen, die irgendeine Art von Codierung beinhalten?];
+  C -->|Nein| E;
+  C -->|Ja| D[Erlaubt das Modding im Spiel das Verbinden von Sockets oder HTTP-Aufrufen?];
+  D -->|Nein| E;
+  D -->|Ja| F[Du kannst LLMs verwenden];
+  B ---->|Nein| E[Du kannst keine LLMs verwenden];
+Modding mit LLM ist nicht für jedes Spiel geeignet. Hier sind einige Dinge, die Sie in Betracht ziehen sollten, bevor Sie entscheiden, ob Sie Ihr Spiel mit LLM modden sollten:

+
    +
  • Ist Ihr Spiel modifizierbar? Nicht alle Spiele sind modifizierbar. Einige Spiele haben eine eingebaute Mod-Unterstützung, während andere Drittanbieter-Tools benötigen. Wenn Ihr Spiel nicht modifizierbar ist, werden Sie nicht in der Lage sein, LLM zur Modifizierung zu verwenden.
  • +
  • Hat Ihr Spiel eine Modding-Community? Nicht alle Spiele haben eine Modding-Community, und selbst wenn sie eine haben, ist die Community vielleicht nicht aktiv oder unterstützend. Wenn es keine Modding-Community für Ihr Spiel gibt, wird es schwieriger sein, Hilfe und Unterstützung zu finden, wenn Sie auf Probleme stoßen. Besonders wenn Sie kein erfahrener Modder für dieses Spiel sind.
  • +
  • Was sind Ihre Ziele? Was erhoffen Sie sich von der Modifizierung Ihres Spiels mit LLM? Möchten Sie die Dialoge verbessern, neue Charaktere hinzufügen oder neuen Inhalt erstellen? Sobald Sie Ihre Ziele kennen, können Sie anfangen, darüber nachzudenken, wie Sie LLM am besten einsetzen können, um sie zu erreichen.
  • +
+

Überprüfen Sie, ob Ihre Entscheidung richtig ist

+

Bevor Sie mit dem Modding Ihres Spiels mit LLM beginnen, ist es wichtig, sicherzustellen, dass Sie alle notwendigen Tools und Ressourcen haben. Hier sind einige Dinge, die Sie überprüfen sollten: +* Stellen Sie sicher, dass Sie die neueste Version von LLM haben. LLM wird ständig aktualisiert, daher ist es wichtig, sicherzustellen, dass Sie die neueste Version haben. Dies liegt normalerweise nicht in Ihrer Kontrolle, wenn Sie Online-Modelle verwenden - was je nach Ziel gut oder schlecht sein kann. +* Stellen Sie sicher, dass Sie ein gutes Verständnis davon haben, wie man LLM benutzt. Es gibt viele Tutorials und Ressourcen online, die Ihnen helfen können, zu lernen, wie man LLM benutzt. Wenn Sie Ihren eigenen Server mit einer Version von LLM (Llama etc.) erstellen, dann sollten Sie wissen, wie das funktioniert und Ihre API darum herum anpassen. Beides erfordert ein gewisses Fachwissen. +* Stellen Sie sicher, dass Sie ein gutes Verständnis der Modding-Tools für Ihr Spiel haben. Jedes Spiel hat seine eigenen Modding-Tools und -Prozesse, daher ist es wichtig, sicherzustellen, dass Sie wissen, wie man sie benutzt. Wenn Sie nicht wissen, wie man sie benutzt, sollte Ihr erstes Ziel sein, das zu überprüfen und zu lernen. Auch wenn Sie ein erfahrener Modder im Spiel X sind, garantiert das nicht, dass Sie auch im Spiel Y gut sein werden.

+

Grundlagen

+

Um mit dem LLM Modding zu beginnen, müssen Sie ein paar grundlegende Dinge wissen: +* Prompt-Fähigkeiten: LLM wird auf einem riesigen Datensatz von Text und Code trainiert, aber es muss immer noch aufgefordert werden, um Text zu generieren. Sie müssen lernen, wie man effektive Prompts schreibt, um die besten Ergebnisse von LLM zu erhalten. Sie können diese Anforderung für bestimmte Dienste (wie Inworld Charaktermotor) eliminieren, aber wenn Sie planen, Ihr eigenes System zu verwenden, ist dies ein Muss. +* Programmierkenntnisse: Einige LLM-Modding erfordert Programmierkenntnisse. Zum Beispiel müssen Sie möglicherweise Code schreiben, um LLM in Ihr Spiel zu integrieren oder benutzerdefinierte Prompts zu erstellen.

+

Sobald Sie ein grundlegendes Verständnis von LLM und Programmierung haben, können Sie anfangen, mit dem Modding Ihres Spiels zu experimentieren. Es gibt viele Möglichkeiten, wie Sie LLM zum Modding Ihres Spiels verwenden können, also seien Sie kreativ und haben Sie Spaß!

+

Hier sind einige zusätzliche Tipps für das LLM Modding:

+
    +
  • Fangen Sie klein an. Versuchen Sie nicht, Ihr ganzes Spiel auf einmal zu modden. Beginnen Sie damit, einen kleinen Teil Ihres Spiels zu modden, wie einen einzelnen Charakter oder eine Quest. Dies wird Ihnen helfen, die Seile zu lernen und potenzielle Probleme zu identifizieren.
  • +
  • Testen Sie oft. Sobald Sie einige Änderungen an Ihrem Spiel vorgenommen haben, sollten Sie diese gründlich testen. Dies wird Ihnen helfen, Fehler oder Probleme zu identifizieren, die Sie möglicherweise verursacht haben.
  • +
  • Holen Sie sich Feedback von anderen. Sobald Sie Ihre Änderungen getestet haben, teilen Sie sie mit anderen und holen Sie sich ihr Feedback. Dies wird Ihnen helfen, Bereiche zu identifizieren, in denen Ihre Mod verbessert werden kann.
  • +
+

LLM Modding kann viel Spaß machen, und es kann eine großartige Möglichkeit sein, Ihre Spiele zu verbessern. Mit ein wenig Aufwand können Sie Mods erstellen, die Ihre Spiele für Sie und andere angenehmer machen.

+ + + + + + +
+
+ + + + +
+ + + +
+ +
+ + +
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/de/201.html b/de/201.html new file mode 100644 index 0000000..1ecb2cc --- /dev/null +++ b/de/201.html @@ -0,0 +1,563 @@ + + + + + + + + + + + + + + + + + + + + + + + + LLM Modding 201 - LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ + + + +

LLM Modding 201

+
+ Cover Image +
+ +

Lokale, Online- oder Service-Modelle?

+

Wenn es um Modding mit LLMs geht, haben Sie mehrere Optionen. Obwohl diese Einteilung für einige nicht zufriedenstellend sein mag, möchte ich sie so klassifizieren, und hier sind einige Details zu jeder:

+
    +
  • Lokale LLM-Modelle: Dies sind Modelle, die auf handelsüblichen PCs ausgeführt werden, die keine Internetverbindung benötigen, und die gesamte Berechnung erfolgt auf dem Consumer-Laufwerk.
  • +
  • Online-LLM-Modelle: Dies sind Modelle, die Sie online ausführen müssen, entweder weil Sie sie aufgrund von Hardware- oder rechtlichen Einschränkungen nicht auf Consumer-Hardware ausführen können.
  • +
  • Service-LLM-Modelle: Dies sind Modelle, die auf bestimmte Bereiche spezialisiert sind und eine API für Entwickler bereitstellen, die einige mühsame Aspekte der LLM-Systeme ausklammert (Beispiel: Inworld KI).
  • +
+

Möglicherweise haben Sie auch einige Modelle gefunden, die eine Mischung aus diesen Kategorien sind, aber es gibt keine Notwendigkeit, eine separate Kategorie für sie zu erstellen. Im folgenden Abschnitt werde ich versuchen, alle diese Kategorienmodelle nach bestem Wissen und Gewissen zu erklären, indem ich die Vor- und Nachteile jeder Kategorie aufzeige.

+

Über lokale Modelle

+

Systemarchitekturdiagramm

+

Lokales LLM-Diagramm

+

Vorteile:

+

Lokale Modelle sind insofern großartig, als sie normalerweise keine ständige Internetverbindung benötigen. Dies ist vorteilhaft für Benutzer, die sich um ihre Privatsphäre sorgen. Darüber hinaus können die meisten Modelle ohne Einschränkungen ausgeführt werden, was weniger zensierte Modelle für Mods ermöglicht - was je nach Art des Mod-Konzepts, das Sie im Kopf haben (zum Beispiel wird Gewalt von vielen KI-Modellen nicht genehmigt, es sei denn, Sie entfernen einige Schutzvorrichtungen), großartig sein kann. Sie sind auch kostenlos, da alles lokal passiert, so dass die Benutzer nichts bezahlen müssen.

+

Nachteile:

+

Oft kommen diese lokalen Modelle in zwei Qualitäten - Modelle mit großen Parametern und Modelle mit kleinen Parametern. Modelle mit großen Parametern erfordern oft sehr hochwertige Hardware, um ausgeführt zu werden (wie mindestens 100sGB RAM und dergleichen), und sie nehmen auch einen sehr großen Speicherplatz auf der Hardware ein. Dies ist, wie Sie erwarten können, im Moment nicht für jeden Mod-Benutzer attraktiv, und Sie würden nur einen Bruchteil der Spielergemeinschaft als Mod-Benutzer ansprechen. Für Modelle mit kleinen Parametern hingegen benötigen sie in den meisten Fällen weniger leistungsfähige Maschinen. Sie benötigen jedoch immer noch etwa 16GB RAM, eine gute GPU und ziemlich viel Speicherplatz. Leider ist die Qualität der Antworten von diesen kleinen Parametermodellen auch sehr fragwürdig (zumindest nach meinen Beobachtungen sind sie nicht gut). Sie können GPT-Q und GGML-Versionen der Modelle finden, die je nach Verbraucherspezifikationen helfen können, aber dennoch benötigen Sie in jeder Kategorie gute Hardware. GPT-Q ist für CUDA-Inferenzmodelle (im Grunde GPU) und GGML ist für CPU ausgelegt. Darüber hinaus gibt es Modelle, die auf Consumer-Hardware laufen können, wo es 4GB VRAM oder 16GB RAM benötigt, und Sie könnten sagen "Großartig, also funktioniert es", aber Sie würden die Tatsache vergessen, dass das Ausführen der Modelle nicht die einzige Anforderung ist. Wir müssen die Modelle und das Spiel gleichzeitig ausführen, und dies ohne Beeinträchtigung der Spiel-Performance (aufgrund des begrenzten RAM/VRAM) erfordert hochwertige Hardware, die die meisten Leute nicht besitzen. Außerdem erfordert das Einrichten dieser lokalen Modelle oft das Installieren einer Menge zusätzlicher Software auf der Hardware des Spielers, was die Schritte erhöht, die sie abschließen müssen, bevor sie ihren Mod genießen können. Da die meisten Mod-Nutzer keine Software-Entwickler sein werden, werden sie Schwierigkeiten haben, ihre Umgebungen so einzurichten, wie Sie es können, was die Anzahl der Spieler, die Ihren Mod genießen können, verringern wird. Darüber hinaus fehlen bei allen lokalen Modellen die Nebenleistungen, die Online- oder Service-Modelle bieten, wie TTS/STT oder Action-Systeme, Stimmen usw. Sie müssen das LLM-Prompting für maximale Effizienz erlernen, damit Ihr Mod das lokale Modell in dieser Struktur aufruft, um die besten Antworten zu erhalten.

+

Über Online-Modelle

+

Systemarchitekturdiagramm

+

Online-Modell-Diagramm

+

Vorteile:

+

Online-Modelle können zwei Untergruppen haben: einsatzbereite Online-Modelle, wie die OpenAI-API, oder benutzerdefinierte Online-Modelle, wie das Ausführen lokaler Modelle auf Ihrem Cloud-Anbieter und das Bereitstellen dieser API für Modder. Beide Optionen haben einen gemeinsamen Vorteil: Sie nehmen die Ausführungslast von der Consumer-Hardware. Das bedeutet, dass sie, solange sie das Mod spielen können, auch in der Lage sein sollten, LLMs zu verwenden. Außerdem sind sie für die Benutzer oft einfacher einzurichten, weil Sie als Mod-Ersteller einfach die API aufrufen und sie nichts extra tun müssen. Aus Update-Perspektive ist es auch einfacher, in dem Sinne, dass Sie keine GBs an Daten als Update pushen müssen, wenn eine bessere Version veröffentlicht wird; Sie könnten einfach auf dem Server aktualisieren oder, wenn Sie ein einsatzbereites Modell verwenden, würde es automatisch aktualisiert.

+

Nachteile:

+

Der Benutzer benötigt eine Internetverbindung, um es zu verwenden - das bedeutet, dass eine ständige Internetverbindung ein Muss ist. Für einsatzbereite Online-Modelle sind sie oft nicht kostenlos und erfordern ein Abonnement. Mit anderen Worten, Benutzer müssen für die Nutzung bezahlen, und es erfordert die Anmeldung auf einer Seite und das Durchführen einiger zusätzlicher Arbeiten auf ihrer Benutzeroberfläche, was von vielen Benutzern nicht bevorzugt wird, weil es ein zusätzlicher Schritt ist. Für benutzerdefinierte Online-Modelle müssen Sie (als Mod-Entwickler) eine VM von einem Cloud-Anbieter mit sehr leistungsfähiger Hardware mieten und alle oben erklärten Schritte für lokale Modelle befolgen. Zusätzlich müssen Sie Ihre eigene API-Schnittstelle schreiben, damit Sie eingehende Anrufe bearbeiten und sie an Ihren lokalen Modellprozessor weiterleiten und die Antwort an den Anrufer zurücksenden können. Wie Sie vielleicht erraten können, ist dies für Mod-Ersteller wirtschaftlich nicht machbar, da der Betrieb eines solchen Servers viel Geld kosten kann. Außerdem müssen Sie jetzt im Grunde genommen lernen, wie man eine performante Web-API schreibt - was eher eine berufliche Fähigkeit als eine Hobby-Modding-Fähigkeit ist. Außerdem müssen Sie immer noch das LLM-Prompting für maximale Effizienz erlernen, damit Ihr Mod das lokale Modell in dieser Struktur aufruft, um die besten Antworten zu erhalten. Ähnlich wie bei lokalen Modellen kommen die meisten Online-Modelle nicht mit zusätzlichen Funktionen wie TTS/SST und Emotionen etc.

+

Über Service-Modelle

+

Systemarchitekturdiagramm

+

Service-Modell-Diagramm

+

Vorteile:

+

Service-Modelle sind oft spezialisiert auf die Erstellung von Charakteren für Gespräche, was bedeutet, dass Sie wenig bis keine Prompting-Fähigkeiten benötigen, um diese Dienste zu nutzen. Dies, obwohl es trivial klingt, entfernt eine enorme Arbeitsbelastung von den Schultern der Entwickler. Ähnlich wie bei Online-Modellen eliminieren sie auch umständliche Installationsschritte, da keine lokale Installation für die Benutzer erforderlich ist. Die gesamte Architektur wird für die Entwickler einfacher, da es nur ein weiterer API-Aufruf ist. Außerdem bieten diese Dienste, da sie von professionellen Unternehmen betrieben werden, oft ihr eigenes SDK, das die groben Implementierungsdetails je nach Anwendungsfall abstrahiert. Darüber hinaus entfernen ähnlich wie Online-Modelle Service-Modelle die Ausführungsbelastung von der Hardware des Spielers, so dass jeder LLMs nutzen kann, unabhängig von der Leistungsfähigkeit seiner Hardware. Während nicht alle Service-Modelle dies anbieten, bieten Dienste wie Inworld andere Funktionen wie TTS/SST, Elevenlabs-Integration, Emotionen, Speicher und mehr aus der Box an, was die Fähigkeiten des Mods mit LLM erheblich bereichert. Aufgrund der Natur von Service-Modellen sind sie im Vergleich zu Online-Modellen kostenbewusster, da sie Endverbraucher als Zielgruppe betrachten, im Gegensatz zu Online-Modellen, bei denen die Zielgruppe Entwickler sind. Der Anmelde-, Zahlungs- und Einrichtungsprozess von Service-Modellen ist oft mit einem kundenorientierten Ansatz gestaltet, was die Benutzerakzeptanz aufgrund ihrer vertrauten UI/UX-Seiten erleichtert. Service-Modelle erfordern keinerlei Anstrengung von Mod-Entwicklern, da sie keine Server einrichten oder für die Infrastruktur bezahlen müssen, sondern einfach die Service-Endpunkte nutzen, was die Entwicklung für Mod-Ersteller erheblich erleichtert.

+

Nachteile:

+

Ähnlich wie bei Online-Modellen müssen Benutzer, um Service-Modelle zu nutzen, mit dem Internet verbunden sein, was von einigen Benutzern nicht bevorzugt wird. Service-Modelle erfordern oft bezahlte Abonnements, obwohl Dienste wie Inworld kostenlose Ebenen für die Mehrheit der Anwendungsfälle anbieten. Unabhängig davon erfordern diese Systeme eine Anmeldung, was ein zusätzlicher Schritt für die Benutzer ist.

+ + + + + + +
+
+ + + + +
+ + + +
+ +
+ + +
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/de/301.html b/de/301.html new file mode 100644 index 0000000..350594d --- /dev/null +++ b/de/301.html @@ -0,0 +1,602 @@ + + + + + + + + + + + + + + + + + + + + + + + + LLM Modding 301 - LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ + + + +

LLM Modding 301

+
+ Cover Image +
+ +

Auswahl Ihres Modells oder Dienstes

+

Wenn es um die Auswahl Ihres Modells oder Dienstes geht, haben wir heutzutage mehrere Optionen. Darüber hinaus werden nach Abschluss dieses Dokuments wahrscheinlich weitere Optionen auftauchen, daher schlage ich vor, diese Liste als Momentaufnahme von heute zu verwenden, anstatt als vollständig aktuelle Liste. Wenn Sie unsicher sind, was Dienste oder Online-Modelle sind, besuchen Sie bitte LLM Modding 201, um einen Überblick darüber zu bekommen.

+
+ +

Mögliche Auswahlmöglichkeiten ab Oktober 2023

+

Lokale Modelle

+
+ Brands +
+ +

Es gibt VIELE lokale Modelle, die meist von Basis-Modellen mit Feinabstimmung abgeleitet sind. Hier werde ich die wichtigsten Basis-Modelle auflisten:

+
    +
  • +

    Falcon:
    +Falcon ist eine Reihe von generativen Großsprachmodellen (LLMs), die vom Technologie-Innovationsinstitut (TII) in Abu Dhabi entwickelt wurden. Falcon-Modelle verwenden Multiquery-Aufmerksamkeit und eine benutzerdefinierte Datenpipeline, um eine hohe Leistung und Skalierbarkeit zu erzielen. Falcon-Modelle können Texte in verschiedenen Bereichen und Aufgaben generieren.

    +
  • +
  • +

    LLaMA:
    +LLaMA ist ein Akronym für Large Language Model Meta AI, eine Reihe von grundlegenden Großsprachmodellen (LLMs), die von Meta (ehemals Facebook) veröffentlicht wurden. LLaMA-Modelle werden auf einem großen Datensatz von 20 Sprachen mit lateinischen und kyrillischen Alphabeten trainiert. LLaMA-Modelle verwenden Rotationspositions-Einbettungen und parallele Berechnungen, um Effizienz und Vielseitigkeit zu verbessern. LLaMA 2 wurde kürzlich Open-Source.

    +
  • +
  • +

    MPT:
    +MPT steht für MosaicML Pretrained Transformer, eine Reihe von Großsprachmodellen (LLMs), die von MosaicML entwickelt wurden, einer Plattform zum Aufbau und Einsatz von maschinellen Lernmodellen. MPT-Modelle verwenden eine modifizierte Transformer-Architektur mit ALiBi (Aufmerksamkeit mit linearen Voreingenommenheiten) und FlashAttention, um Kontextlängenbeschränkungen zu beseitigen und die Geschwindigkeit zu optimieren. MPT-Modelle werden auf einer Mischung von Text- und Code-Daten trainiert und können für verschiedene Aufgaben feinabgestimmt werden.

    +
  • +
  • +

    GPT-J:
    +GPT-J ist ein Open-Source-Großsprachmodell (LLM), das 2021 von EleutherAI entwickelt wurde. Es handelt sich um ein generatives vortrainiertes Transformer-Modell, das darauf ausgelegt ist, menschenähnlichen Text zu erzeugen, der von einem Prompt ausgeht. Es hat 6 Milliarden Parameter und verwendet dichte Aufmerksamkeit, Rotationspositions-Einbettungen und parallele Berechnungen. Es wurde auf dem Pile-Datensatz trainiert, der Text aus verschiedenen Quellen und Bereichen enthält.

    +
  • +
  • +

    GPT-Neo:
    +Eine Open-Source-Replikation von GPT-3 mit 2,7 Milliarden Parametern, die Texte in verschiedenen Bereichen und Aufgaben generieren kann. GPT-Neo ist ein Open-Source-Großsprachmodell (LLM), das 2021 von EleutherAI entwickelt wurde. Es handelt sich um ein Modell paralleles GPT-2 und GPT-3-Style-Modell, das die mesh-tensorflow-Bibliothek verwendet. Es kann Texte in verschiedenen Bereichen und Aufgaben generieren, wie z.B. das Verständnis natürlicher Sprache, die Generierung natürlicher Sprache und künstliche Konversation. Es hat zwei Versionen: eine mit 1,3 Milliarden Parametern und eine andere mit 2,7 Milliarden Parametern. Es verwendet lokale Aufmerksamkeit in jeder zweiten Schicht mit einer Fenstergröße von 256 Tokens. Es wurde auf dem Pile-Datensatz trainiert, der Texte aus 26 verschiedenen Quellen enthält, wie z.B. Bücher, Nachrichten, Wikipedia und Code.

    +
  • +
+

Neben diesen Basis-Modellen hostet Hugging Face eine Vielzahl von Open-Source-feinabgestimmten Modellen für fast jedes dieser Basis-Modelle. Sie können sie hier finden.

+
+ +

Online-Modelle

+
+ Brands +
+

Ich werde nur Online-Modelle auflisten, die über eine API genutzt werden können. Das bedeutet, dass Bard oder Bing Chat nicht Teil dieser Liste sein werden.

+
    +
  • +

    OpenAI: OpenAI bietet eine Vielzahl von Produkten und Diensten an, wie z.B. GPT-4, ChatGPT 3.5 Turbo und andere Tools wie DALL·E, ein generatives Modell, das Bilder aus Textbeschreibungen erstellt, und OpenAI Whisper, das Audio in Text transkribiert (ideal für STT-Transformation). Die OpenAI-API kann für unsere LLM-Modding-Zwecke genutzt werden, vorausgesetzt, der Benutzer stellt seine Anmeldedaten oder API-Schlüssel zur Kommunikation mit den Servern zur Verfügung.

    +
  • +
  • +

    MosaicML: MosaicML ist eine Plattform zum Aufbau und Einsatz von generativen KI-Modellen auf Ihren Daten innerhalb Ihrer sicheren Umgebung. MosaicML bietet die MPT Foundation Series, eine Reihe von Open-Source-, kommerziell lizenzierten LLMs, die direkt eingesetzt oder auf Ihren Daten feinabgestimmt werden können. MosaicML Inference ist ein Dienst, der es Ihnen ermöglicht, LLMs sicher zu implementieren, für bis zu 15x Kosteneinsparungen, und MosaicML Training ist ein Dienst, der es Ihnen ermöglicht, Ihre eigenen state-of-the-art Modelle mit einem einzigen Befehl vorzutrainieren oder feinabzustimmen und über mehrere Clouds hinweg zu orchestrieren.

    +
  • +
  • +

    DeepInfra: DeepInfra ist ein serverloser Inferenzdienst, der Zugang zu einer Vielzahl von LLMs und Einbettungsmodellen bietet. Sie können Llama 2, GPT-J, GPT-Neo und Falcon-Modelle dort als API-Endpunkte verwenden.

    +
  • +
  • +

    Replicate: Replicate ist eine Plattform, die es Ihnen ermöglicht, Open-Source-Maschinenlernmodelle mit einer Cloud-API auszuführen. Replicate hat eine Community von Maschinenlernbegeisterten, die tausende von Modellen geteilt haben, einschließlich Sprachmodelle, Videoerstellungs- und Bearbeitungsmodelle, Superauflösungsmodelle, Bildrestaurierungsmodelle, Bild-zu-Text-Modelle und Text-zu-Bild-Modelle. Replicate bietet auch Cog an, ein Open-Source-Tool, das es Ihnen ermöglicht, Maschinenlernmodelle in einem standardisierten, produktionsbereiten Container zu verpacken. Sie können Llama2, GPT-J und Falcon in Replicate ebenfalls ausführen.

    +
  • +
+
+ +

Service-Modelle

+
+ Brands +
+

Ich werde nur die Service-Modelle auflisten, die ich kenne, ob namentlich oder aus Erfahrung, aber das ist keineswegs eine vollständige Liste. Fühlen Sie sich frei, einen Pull-Request zu machen, wenn Sie diese Liste erweitern möchten.

+
    +
  • +

    Inworld AI:
    +Inworld AI ist der führende Character Engine für AI-NPCs. Es ermöglicht Nicht-Spieler-Charakteren (NPCs) in Spielen und virtuellen Welten intelligenten Dialog, macht sie intelligenter und menschenähnlicher und erhöht ihre Fähigkeit, mit Benutzern zu interagieren. Wenn Sie Inworld verwenden, erhalten Sie out-of-the-box LLM-Charakterunterstützung, Text-to-Speech mit mehreren realistischen Stimmen, Speech-to-Text-Unterstützung für Mikrofon-Transkriptionsgespräche, Emotionen und ein Aktionssystem (für die Herstellung von interaktiven Mods). Inworld bietet all dies auch kostenlos in ihrer Free-Tier an, die jeder Benutzer nutzen kann, ohne sogar Kreditkarteninformationen angeben zu müssen. Die Free-Tier bietet 5.000 kostenlose API-Interaktionen pro Monat, was für jeden Mod ausreicht (nach meiner Erfahrung). Sie bieten auch unbegrenzte In-Studio-Interaktion an, die es Benutzern ermöglicht, bestimmte Dinge auf ihrem Portal zu besprechen oder anzupassen, ohne etwas extra zu bezahlen. Sie haben mehrere SDKs für bestimmte Spiel-Engines, die für Modder nicht super hilfreich sein können, aber sie haben auch ein Node.js SDK und direkte Endpunktaufrufe, die leicht genutzt werden können. Sie bieten auch Lipsync-Daten an, falls Ihr Spiel dies unterstützt. Nicht nur das, sie haben auch nahtlose Unterstützung für die Stimmen von elevenlabs, falls Sie qualitativ hochwertige Stimmen auf elevenlabs haben, können diese leicht genutzt werden.

    +
  • +
  • +

    ChatFAI:
    +ChatFAI ist eine AI-gesteuerte Chatbot-Plattform, die es Benutzern ermöglicht, Gespräche mit ihren Lieblingscharakteren aus Filmen, Fernsehserien, Büchern und mehr zu führen. Es verwendet Algorithmen zur Verarbeitung natürlicher Sprache, um Antworten auf Benutzereingaben zu generieren. Sie unterstützen die Erstellung von benutzerdefinierten Charakteren. Sie haben auch einen kostenlosen Plan; jedoch ist ihr kostenloser Plan für den tatsächlichen Mod-Gebrauch (Stand September 2023) nicht nutzbar, da er nur 250 Nachrichten pro Monat bietet, was ziemlich begrenzt ist.

    +
  • +
  • +

    character.ai:
    +character.ai ist ein Unternehmen, das den Science-Fiction-Traum von offenen Gesprächen und Zusammenarbeiten mit Computern zum Leben erweckt. Es handelt sich um eine Chatbot-Webanwendung mit einem neuronalen Sprachmodell, das Textantworten erzeugen kann, die wie die von echten Menschen klingen und eine natürliche Konversation ermöglichen. Es kann für Vorstellungskraft, Brainstorming und Sprachenlernen verwendet werden. Es ist technisch gesehen kostenlos bei der Anmeldung und scheint keine Nachrichtenbegrenzung zu haben. Sie bieten das c.ai+ Modell an, das schnellere Antwortzeiten und Prioritätszugang bietet (weil einige Charaktere eine Wartezimmer benötigen, wenn sie zu hoch gefragt sind). Leider bieten sie keine offizielle API an und Sie müssen eine Open-Source-inoffizielle Version verwenden, die jederzeit brechen kann, was sie weniger geeignet für Langzeit-Unterstützungs-Mods macht. Sie haben kein TTS/SST-System.

    +
  • +
  • +

    convai:
    +Convai ist sehr ähnlich zu Inworld AI; jedoch scheinen sie nicht die gleichen Funktionen wie Inworld zu haben. Derzeit bieten sie auch eine Free-Tier an, aber das Limit ist möglicherweise nicht für jeden ausreichend, da es sich um ein pro Tag 100 Interaktionen-Kontingent handelt. Jede Nachricht gilt als eine Interaktion. Dies kann bestimmte Nutzungen für viele Mods einschränken. Sie bieten auch SST/TTS an wie Inworld, und convai scheint insgesamt eine bessere Sprachqualität zu haben. Sie bieten auch bestimmte Plugins für Spiel-Engines wie Inworld an und sie bieten auch einen direkten Charaktererstellungsendpunkt an (was eine ausstehende Funktion bei Inworld ist). Sie sind derzeit Partner von Nvidia, was wichtig zu beachten ist.

    +
  • +
  • +

    Kamoto.AI:
    +Kamoto.AI ermöglicht es Prominenten, Influencern und Benutzern, maßgeschneiderte KI-Charaktere zu erstellen, zu trainieren und zu monetarisieren. Leider scheinen sie keine API bereitzustellen, so dass Sie wahrscheinlich Ihr eigenes inoffizielles Paket schreiben müssen, was oft eine Menge Arbeit ist.

    +
  • +
  • +

    NPCx:
    +NPCx ist ein globales Team von Computeringenieuren, Datenwissenschaftlern, Künstlern und Animatoren, die die nächste Generation von Künstlicher Intelligenz (KI) Technologie nutzen, um die digitalen Geschichtenerzähler unserer Zeit zu unterstützen. Sie konzentrieren sich auf Nicht-Spieler-Charaktere (NPCs) in Videospielen und zielen darauf ab, reichere, vielfältigere und lebensechtere 3D-Erfahrungen in einem Bruchteil der Zeit und Kosten zu bieten. Es sind nicht viele Informationen verfügbar außer diesen. Sie haben keine öffentliche Anmeldung und verlangen, dass Sie sie kontaktieren. Nicht genau nutzbar in diesem Fall ab September 2023, sieht aber vielversprechend aus.

    +
  • +
+
+ +

Warum macht Inworld Sinn?

+

Basierend auf meiner Erfahrung als Mod-Inhaber kann ich mit Sicherheit sagen, dass viele Menschen weder die Zeit noch die Neigung haben, sich durch lange Installationsanleitungen zu lesen. Viele ignorieren die gesamte Beschreibung und versuchen, den Mod direkt zu installieren. In einer solchen Situation ist das Letzte, was Sie wollen, eine Menge komplizierter Installationsanleitungen hinzuzufügen, die die Benutzer möglicherweise nicht abschließen oder nach Abschluss feststellen, dass ihre Hardware nicht leistungsfähig genug ist. Mehr Schritte == mehr Bugs, was mehr Arbeit für den Mod-Inhaber bedeutet. In Anbetracht dessen, dass ich nicht bereit bin, hohe Cloud-Computing-Gebühren zu zahlen, sind lokale Modelle für mich keine Option. Die nächste Wahl sind Online-Modelle, aber diese erfordern ein Vorabtraining der Modelle für bessere Antworten. Sie sind oft für Entwickler konzipiert, was den Anmelde-/Einrichtungsprozess für durchschnittliche Spieler unattraktiv macht. Unter diesen Bedingungen werden Service-Modelle zur logischsten Wahl.

+

Aus der Liste sticht Inworld mit seiner Free-Tier und der Feature-Kombination heraus. Ich muss zugeben, dass ich hier voreingenommen bin, da ich Inworld in vielen meiner Mods verwendet habe und sie mir mehrere Monate lang ein kostenloses Entwicklerkonto zur Verfügung gestellt haben. Aber meine Mods wurden von tausenden von Menschen heruntergeladen und gespielt, und ich weiß sicher, dass die meisten von ihnen es völlig kostenlos genossen haben, ohne irgendwo ihre Kreditkartendetails angeben zu müssen. Zu wissen, dass Inworld den Spielern diese Flexibilität bietet, ist einer der Hauptgründe, warum ich mich dafür entscheide, mit Inworld weiterzumachen. Im nächsten Kapitel werden wir über Details zur Nutzung von Inworld sprechen.

+ + + + + + +
+
+ + + + +
+ + + +
+ +
+ + +
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/de/401.html b/de/401.html new file mode 100644 index 0000000..48dac46 --- /dev/null +++ b/de/401.html @@ -0,0 +1,603 @@ + + + + + + + + + + + + + + + + + + + + + + LLM Modding 401 - LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ + + + +

LLM Modding 401

+
+ inworld +
+ +

Warum Inworld?

+

Falls Sie wissen möchten, warum dieser Abschnitt mit Inworld AI fortgesetzt wird, werfen Sie bitte einen Blick auf den Abschnitt 301, um den Vergleich zwischen den Diensten und möglichen Ansätzen zu sehen. Wenn alle Vor- und Nachteile abgewogen sind, glaube ich, dass Inworld als die beste Option hervorgeht, und das ist der Grund, warum ich Inworld in fast allen meinen Produktionsmods verwendet habe.

+

Über Inworld

+

Auf den ersten Blick könnten Sie sich fragen: "Wie kann ich das in meinem Mod verwenden, während die Hauptzielgruppe von Inworld anscheinend Spieleentwickler sind?" Und Sie wären berechtigt, so zu denken. Technisch gesehen scheint das Hauptziel von Inworld ein Ein-Entwickler-Abonnement zu sein, das alle Benutzer nutzen können, ohne Inworld überhaupt zu sehen. Wie Sie jedoch vermuten können, ist dies wirtschaftlich für keinen Mod-Ersteller machbar, es sei denn, Sie berechnen Ihren Benutzern etwas, was Mods eher zu einem abonnementbasierten DLC als zu einem Mod macht. Ich werde in diesem Abschnitt nicht auf die Preisdetails von Inworld eingehen, da sie immer Feedback von den Kunden sammeln und ihre Preise entsprechend aktualisieren. Daher besteht eine hohe Chance, dass zum Zeitpunkt des Lesens dieses Artikels die Preise von Inworld AI sogar noch erschwinglicher sein können als das aktuelle System. Aber insgesamt ist die Preispolitik von Inworld benutzerfreundlich genug, dass Sie Benutzern erlauben können, ein Konto zu erstellen und es für eine beträchtliche Zeit völlig kostenlos zu nutzen.

+

Im Folgenden werde ich Vor- und Nachteile auflisten. Dies wird jedoch keine Wiederholung des vorherigen Abschnitts 301 sein; vielmehr werde ich mich hier ausschließlich auf DevEx konzentrieren.

+

Vorteile

+

Ein Service, um sie alle zu beherrschen: Stellt fast alle benötigten Werkzeuge in seinem Funktionsumfang zur Verfügung, so dass Sie sich nicht für verschiedene Dienste einzeln anmelden müssen.

+

Nicht-Ausgrenzendes UX/UI: Obwohl sie sich hauptsächlich auf Entwickler/Spielentwickler konzentrieren, ermutigt ihre Benutzeroberfläche und Benutzererfahrung normale Benutzer dazu, herumzuspielen und sich mit dem System vertraut zu machen. Dies ist kein direkter Vorteil für Sie als Mod-Entwickler, hilft aber indirekt sehr, weil es viele "Wie kann ich dies und das tun" Fragen entfernt.

+

Preisgestaltung: Es mag nicht völlig kostenlos sein, aber es ist definitiv kostenlos genug, um zu entwickeln und den Spielern zur Verfügung zu stellen. Es ist auch sehr einfach für Spieler, ihr Konto für mehr Interaktionszeit zu erweitern, ohne dass der Mod-Entwickler Änderungen vornehmen muss.

+

Engagement: Falls Sie Fragen haben, engagieren sich die Entwickler tatsächlich mit Ihnen in ihrem Discord-Kanal. Das ist besonders gut für diejenigen, die neu in der LLM Modding sind. Sie helfen Menschen von LLM Aufforderungsleitfäden bis hin zu technischen Dingen.

+

Nachteile

+

Protokoll und SDKs: Das ausgewählte Protokoll (gRPC) passt nicht gut zu Mods, die bereits in Bezug auf ihren Technologie-Stack etwas eingeschränkt sind. Außerdem sind die SDKs hauptsächlich auf beliebte Spiel-Engines wie Unreal oder Unity ausgerichtet, aber 95% der Mods haben keine direkte Interaktion mit diesen Engines, auch wenn das Spiel mit diesen Engines gemacht wurde.

+

Fehlende APIs: Leider fehlen Inworld einige sehr wichtige APIs, wie das Erstellen, Aktualisieren oder Löschen von Charakteren/Gehirnen über einen API- oder SDK-Aufruf. Ich weiß jedoch, dass Inworld sich dessen bewusst ist und sie bereits begonnen haben, daran zu arbeiten, so dass dies zum Zeitpunkt des Lesens dieses Artikels sehr wahrscheinlich kein Problem mehr ist.

+


+
+
+ inworld +
+ +

Erste Schritte mit Inworld AI

+

Dank ihres Preismodells und Anmeldesystems ist das Ausprobieren von Inworld super einfach. Gehen Sie einfach auf inworld.ai und erstellen Sie Ihr Konto, indem Sie auf "Get Started" klicken. Von dort aus stellt Ihnen Inworld einen Arbeitsbereich zur Verfügung, der bestimmte Charaktere als Demo-Charaktere enthält.

+

Ich würde dringend empfehlen, zuerst mit ihnen zu interagieren, um ein Gefühl für das gesamte Erlebnis zu bekommen. Sobald Sie das Gefühl haben, genug Interaktion gehabt zu haben, schauen Sie sich ihre Beschreibungen, Ziele und mehr an. Anders als bei anderen Modellen erwartet Inworld nicht, dass Sie einen großen beschreibenden Absatz verfassen, der sorgfältig über Tage hinweg erstellt wurde. Stattdessen trennen sie die Bedenken und Punkte in verschiedene Abschnitte, so dass Sie sie auf eine organisierte Weise ausfüllen können. Darüber hinaus macht Inworld einen ausgezeichneten Job mit ihrer Charaktererstellung UI, indem sie grundlegende und fortgeschrittene Konzepte unterscheidet. Zum Beispiel ist die Kernbeschreibung ein grundlegendes Merkmal, das alle Charaktere haben müssen, während Persönlichkeit und Emotionen fortgeschrittenere Merkmale sind als ein grundlegender Charakter braucht.

+

Um kurz Informationen über jeden Abschnitt zu geben:

+
    +
  • +

    Kernbeschreibung: Dies ist die grundlegende Struktur Ihres Charakters, einschließlich seiner Geschichte, aktuellen Situation und Persönlichkeitsmerkmale. Diese Beschreibung ist von entscheidender Bedeutung und wird vom LLM sehr ernst genommen. Es ist ratsam, in diesem Abschnitt keine vorübergehenden Informationen aufzunehmen, da diese Beschreibung in gewisser Weise in die Seele des Charakters eingraviert ist.

    +
  • +
  • +

    Mängel: Diese stellen die Schwächen und Verletzlichkeiten des Charakters sowie die Motivationen dar. Diese können verwendet werden, um den von Ihnen erstellten Charakter zu vertiefen.

    +
  • +
  • +

    Dialogstil: Inworld bietet eine Reihe von sehr nützlichen Optionen, wenn Sie nicht jeden Dialog des Charakters von Hand gestalten möchten. Wenn Sie jedoch ernst werden wollen, sollten Sie einen benutzerdefinierten Dialogstil hinzufügen. Nach meinen Beobachtungen liefert er konsequent die besten Antworten.

    +
  • +
  • +

    Sprachparameter: Dies ist wahrscheinlich der verständlichste Abschnitt. Eine Sache, die man beachten sollte, ist, dass er mit einer out-of-the-box Elevenlabs-Integration kommt. Das bedeutet, dass, wenn Sie (oder der Spieler) möchten, Sie jede Elevenlabs-Stimme, die Sie haben, klonen oder verwenden und hier integrieren können. Wenn Sprachdaten durchgegeben werden, wird in diesem Fall Elevenlabs verwendet.

    +
  • +
+

Weiter zu den erweiterten Funktionen: Persönlichkeit, Wissen, Ziele, Szenen und Beziehungen.

+
    +
  • +

    Persönlichkeit: Wie der Name schon sagt, bezieht sich dieser Abschnitt auf die Persönlichkeit unserer Charaktere. Hier können Sie den Charakter negativer, fröhlicher, ängstlicher usw. klingen lassen. Die emotionale Engine innerhalb von Inworld wird durch die Persönlichkeit gesteuert und formt das Verhalten eines Charakters, indem sie den Bereich ihrer Emotionen mit Adjektiven und Schiebereglern definiert.

    +
  • +
  • +

    Wissen: Antworten auf Benutzeranfragen werden durch Fakten und Wissen bereitgestellt. Charakterspezifische Informationen fallen unter Persönliches Wissen, während Allgemeines Wissen über mehrere Charaktere geteilt wird und bei der Welterschaffung hilft. Sie sind wichtig, wenn Ihre Charaktere nicht in der realen Welt angesiedelt sind. Sie können die KI immer noch nicht vollständig "isolieren", indem Sie viel allgemeines Wissen hinzufügen, aber je mehr Informationen Sie eingeben, desto besser angepasste Antworten werden Sie erhalten.

    +
  • +
  • +

    Ziele: Diese Funktion ist außerordentlich leistungsfähig und ermöglicht das Auslösen spezifischer Aktionen durch vordefinierte Wörter oder Absichten. Ich empfehle dringend, ihre Dokumentation für weitere Details zu erkunden.

    +
  • +
  • +

    Szenen: Ich habe ihr Potenzial noch nicht vollständig erfasst und habe sie nicht viel genutzt. Im Grunde genommen gibt sie den Charakteren ein Gefühl für ihren aktuellen Standort. Da meine Modifikationen meist auf dynamischen Einstellungen basierten, erwiesen sich Szenen für mich nicht als sehr nützlich. Wenn Sie sich jedoch auf statische Szenen konzentrieren, lohnt es sich, tiefer einzutauchen.

    +
  • +
  • +

    Beziehungen: Beziehung ist ein neues Feature, das die Entwicklung von Beziehungen zwischen NPCs und Spielern über verschiedene Spielsessions hinweg ermöglichen soll. Im Grunde bedeutet das eine "progressive" Beziehung zwischen Spieler und Charakter.

    +
  • +
+

Für weitere Details können Sie ihre Dokumentation überprüfen.

+

Architektur

+
+

Hinweis

+

Wenn Ihr Spiel-Modding eine ordnungsgemäße NDK-Integration unterstützt und Sie Erfahrung in der NDK-Entwicklung haben, schauen Sie sich bitte das Inworld NDK-Entwicklungskit an. Es könnte 10x effizienter sein als die hier beschriebene Architektur. Siehe inworld-ai/inworld-ndk.

+
+

Normalerweise erlauben Spiele nicht das Ausführen verschiedener DLLs in ihrer Umgebung, es sei denn, Sie wissen, was Sie tun und modifizieren den Kern des Spiels bis ganz nach unten. Deshalb ist es oft besser, einen Sidecar-Ansatz zu verwenden.

+

Wenn Sie zuvor mit meinen Mods gespielt haben, haben Sie wahrscheinlich bemerkt, dass es immer erfordert, dass Sie vor dem Start des Spiels ein "Terminal" im Hintergrund sehen. Der Hauptgrund dafür ist, dass dieses "Terminal" im Grunde ein eingepackter Node.js Socket Server ist, der das vorhandene Inworld SDK nutzt. Natürlich können Sie, abhängig von Ihrer Implementierung und Anforderungen, diese Anforderung komplett entfernen und den Mod direkt in das Spiel selbst integrieren.

+

Inworld Integrationsdiagramm

+

Ich glaube, das obige Bild erklärt die Architektur deutlich. Um jedoch etwas mehr Kontext zu geben: +Das Spiel interagiert nie direkt mit dem Inworld AI-System; es verwendet die "Relayer Application" als Proxy, um seine Aktionen auszuführen. Im Diagramm wird die Relayer Application als Socket-Schicht dargestellt; je nach Einschränkungen in Ihrem Mod kann es sich jedoch auch um eine einfache REST API handeln. +Solange Ihr Sidecar in der Lage ist, das Inworld SDK zu integrieren, liegt der Rest völlig bei Ihnen. Technisch gesehen können Sie Named Pipes verwenden, um eine Verbindung zwischen der Anwendung und dem Spiel herzustellen. Oder Sie können sogar einige benutzerdefinierte Formate oder provisorische Lösungen wie das Schreiben in eine Datei und das Lesen davon auf der Anwendungsseite verwenden. Dies sollte jedoch die letzte Option sein, da I/O-Operationen schrecklich langsam sind und zu unerwünschter Verzögerung in der Kommunikation führen können.

+

Ein weiterer guter Aspekt des Sidecar-Ansatzes ist, dass er technisch gesehen wie ein separater Prozess/Anwendung funktioniert und unabhängig vom Mod mehr Dinge tun kann. Zum Beispiel, wenn das Spiel Ihnen nicht erlaubt, Sounds abzuspielen, können Sie dies im Sidecar handhaben, da es wahrscheinlich eine bessere Chance hat, solche Operationen durchzuführen. Darüber hinaus können Sie auch Ihre eigene kleine Datenbank erstellen, um die Kommunikation zwischen dem Spieler und dem System zu speichern, so dass Sie sich darauf beziehen möchten, einige Daten für die Mod-Nutzung speichern und so weiter. Der Rest liegt wirklich an Ihrer Vorstellungskraft - lassen Sie Ihrer Kreativität freien Lauf! :)

+

Wenn Sie einen Hinweis benötigen, wie Sie einen Sidecar mit dem Inworld SDK implementieren können, würde ich vorschlagen, folgendes zu überprüfen:

+

Offizielle Inworld NodeJS SDK Beispiele für sowohl JS als auch TS. Dies sollte Ihr Haupt-Einstiegspunkt sein, wenn Sie überhaupt nicht mit Inworld vertraut sind. Link

+

Bannerlord Mod verwendet C# für den Haupt-Bannerlord-Mod + verwendet einen JS-Sidecar mit einer Websocket-Schicht und das Inworld NodeJS SDK. Link

+

Skyrim Mod verwendet C++ für den Haupt-Skyrim-Mod, Papyrus Scripting für spielbezogenes Modding, C# Audiosystem zum Abspielen der Sounds (weil ich das nicht auf der Skyrim oder Node.js-Seite machen wollte) + verwendet die TypeScript-Version des Sidecars, die eine Websocket-Schicht und das Inworld NodeJS SDK verwendet. Link

+

Der Inworld Discord Kanal bietet eine großartige Möglichkeit, sich mit anderen Entwicklern zu vernetzen. Sie können Ihre Fragen stellen und etwas Community-Know-how sammeln. Sie müssen das Rad nicht neu erfinden. Link

+

Bemerkungen

+

Inworld AI ist ein fantastischer Dienst, und bisher hatte ich viel Spaß damit zu arbeiten. Wie wir im vorherigen Abschnitt 301 und hier skizziert haben, hat es seine Vor- und Nachteile, aber ich würde mit Zuversicht sagen, dass die Vorteile die Nachteile bei weitem überwiegen. Darüber hinaus können Sie Inworld immer Verbesserungsvorschläge machen. Das ist einer der tollen Aspekte, die ich an ihnen schätze - wie zugänglich sie sind. Wenn Sie einen Vorschlag zur Verbesserung des Systems haben, können Sie ihn einfach vorschlagen, und sie hören tatsächlich zu! Natürlich haben sie, wie jedes Unternehmen, ihre eigenen Backlog-Elemente und müssen bewerten, wie sie diese implementieren können. Aber aus einer pragmatischen Sicht hat jede wertvolle Funktion, die sie hinzufügen, einen Nutzen für sie auf lange Sicht. Daher haben sie praktisch keinen Grund, gute Vorschläge abzulehnen. Sie können also immer beruhigt sein, dass jemand daran arbeiten wird, wenn es für ihren Backlog gut genug befunden wird.

+

Diese gesamte Seite ist darauf ausgerichtet, wie Sie Ihren eigenen Mod mit LLMs erstellen können. Allerdings können Sie die gleichen Ideen und Architekturen auch in Ihren eigenen Spielen anwenden. Natürlich könnten die Systeme technisch anders sein als das, was in diesem Dokument detailliert beschrieben wird, insbesondere da nicht-proprietäre Spiel-Engines mehr Flexibilität bieten als proprietäre, wo das meiste Modding normalerweise stattfindet.

+

Das war's, Leute! Ich hoffe, dieses Dokument war für einige von Ihnen hilfreich. Mir ist bewusst, dass es viele andere Dienste und Modelle geben könnte, die ich nicht erwähnt habe und die Sie auch ansprechend finden könnten. Allerdings basiert dieser gesamte Text auf meinem Wissen und meinen Erfahrungen. Wenn Sie einen Beitrag leisten möchten oder Vorschläge haben, können Sie dies gerne tun, indem Sie einen Pull-Request erstellen. Wenn Sie diesen Artikel wertvoll fanden und aus einer anderen Sprache kommen, helfen Sie mir bitte, dies in Ihre Sprache zu übersetzen.

+ + + + + + +
+
+ + + + +
+ + + +
+ +
+ + +
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/de/index.html b/de/index.html new file mode 100644 index 0000000..902731a --- /dev/null +++ b/de/index.html @@ -0,0 +1,520 @@ + + + + + + + + + + + + + + + + + + + + + + Einleitung - LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ + + + +

Einleitung

+
+ Titelbild +
+ +
+

Wichtig

+

Ich behaupte keineswegs ein Experte für LLMs zu sein. Ich bin nur ein Modder, der es genießt, beide Themen zu kombinieren. Wenn Sie weitere Informationen haben, zögern Sie nicht, einen Pull Request zu diesem Repository zu machen, und wir können dies aktualisieren.

+
+

Über diesen Leitfaden

+

Warum erstelle ich diesen Leitfaden?

+

Ich erstelle diesen Leitfaden, um Moddern zu helfen, zu lernen, wie man große Sprachmodelle (LLMs) verwendet, um ihre Lieblingsspiele zu modifizieren. LLMs sind eine Art künstliche Intelligenz, die verwendet werden kann, um Text zu generieren, Sprachen zu übersetzen und Fragen auf eine umfassende und informative Weise zu beantworten. Sie haben das Potenzial, das Modden von Spielen zu revolutionieren, indem sie es Moddern ermöglichen, neue und innovative Spielerlebnisse zu schaffen.

+

Dieser Leitfaden wird nicht allgemein über LLMs handeln. Stattdessen wird er die Grundlagen vermitteln, wie man seine eigenen Mods schreibt, die LLMs in ihrem Kern nutzen. Ich bin kein Maschinenlernwissenschaftler, mein Wissen darüber ist kaum wissenschaftlich, daher werde ich mich auf die praktischen Aspekte des Modding konzentrieren, wie die Auswahl des richtigen LLMs für Ihr Projekt, die Integration in Ihren Mod und die Behebung häufig auftretender Probleme.

+

Ich glaube, dass LLMs das Potenzial haben, die Modding-Szene zu bereichern, indem sie LLMs für Modder aller Fähigkeitsstufen zugänglich machen. Ich hoffe, dass ich mehr Menschen dazu ermutigen kann, ihre eigenen Mods zu erstellen und zu teilen. Dies wird zu einer vielfältigeren und innovativeren Modding-Szene führen und letztendlich ein besseres Spielerlebnis für alle schaffen.

+

Hier sind einige spezifische Beispiele, wie LLMs zum Modden von Spielen verwendet werden können:

+
    +
  • Generieren Sie neue Dialoge für NPCs
  • +
  • Erstellen Sie neue Quests und Handlungsstränge
  • +
  • Entwickeln Sie neues KI-Verhalten für Feinde und andere Charaktere
  • +
  • Erstellen Sie prozedural generierten Inhalt, wie Karten und Dungeons
  • +
  • Übersetzen Sie Spiele in neue Sprachen
  • +
+

In diesem Leitfaden werden wir uns jedoch hauptsächlich auf die Generierung von Dialogen konzentrieren. Nichtsdestotrotz haben LLMs eine große Zukunft vor sich und die oben genannten Beispiele können sehr gut umgesetzt werden.

+

Ich glaube, dass LLMs das Potenzial haben, das Modden von Spielen zu revolutionieren. Indem sie es Moddern ermöglichen, neue und innovative Spielerlebnisse für Spieler zu schaffen, die die Wiederspielbarkeit der Mods mit einzigartigen Erfahrungen erhöhen.

+

Ich hoffe, dass dieser Leitfaden eine wertvolle Ressource für Modder sein wird, die daran interessiert sind, LLMs zu verwenden, um neue und aufregende Mods für ihre Lieblingsspiele zu erstellen.

+

Struktur

+

Ich werde dies in 3 Abschnitte unterteilen. Hier ist, worüber jeder Abschnitt sprechen wird:

+
    +
  • LLM Modding 101 : Wird eine allgemeine Einführung und erforderliche Dinge geben
  • +
  • LLM Modding 201 : Wird sich darauf konzentrieren, verschiedene LLM-Typen zu erklären und wird ihre Vor- und Nachteile diskutieren.
  • +
  • LLM Modding 301 : Wird Architekturtypen erklären, detaillierte Informationen über bekannte LLM-Typen geben und einige Begründungen dahinter liefern.
  • +
  • LLM Modding 401 : Wird sich hauptsächlich auf die Verwendung von Inworld konzentrieren und dessen Vor- und Nachteile sowie Anleitungen diskutieren
  • +
+ + + + + + +
+
+ + + + +
+ + + +
+ +
+ + +
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..a0c19ca --- /dev/null +++ b/index.html @@ -0,0 +1,520 @@ + + + + + + + + + + + + + + + + + + + + + + Intro - LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ + + + +

Intro

+
+ Cover Image +
+ +
+

Full Disclaimer

+

By no means I claim to be expert on LLM. I just happen to be a modder who enjoys combining both of these topics. In case if you have more information, feel free to make a Pull Request to this repository, and we can update this.

+
+

About this Guide

+

Why I'm Creating This Guide

+

I am creating this guide to help modders learn how to use large language models (LLMs) to mod their favorite games. LLMs are a type of artificial intelligence that can be used to generate text, translate languages, and answer questions in a comprehensive and informative way. They have the potential to revolutionize game modding by allowing modders to create new and innovative gameplay experiences.

+

This guide will not be about LLMs in general. Instead, it will provide the basics of how to write your own mods that utilize LLMs in their core. I am not a machine learning scientist, my knowledge on this is barely scientific, so I will focus on the practical aspects of modding, such as how to choose the right LLM for your project, how to integrate it into your mod, and how to troubleshoot common problems you can encounter.

+

I believe that LLMs have the potential to enrich modding scene by making LLMs accessible to modders of all skill levels, I hope to encourage more people to create and share their own mods. This will lead to a more diverse and innovative modding scene, and ultimately create a better gaming experience for everyone.

+

Here are some specific examples of how LLMs can be used to mod games:

+
    +
  • Generate new dialogue for NPCs
  • +
  • Create new quests and storylines
  • +
  • Develop new AI behaviors for enemies and other characters
  • +
  • Create procedurally generated content, such as maps and dungeons
  • +
  • Translate games into new languages
  • +
+

However, we will focus on generating dialogues in this guide mostly. That being said, LLMs have a great future ahead and examples mentioned above can very much be implemented as well.

+

I believe that LLMs have the potential to revolutionize game modding. By making it possible for modders to create new and innovative gameplay experiences for players that increase the replayability of the mods with unique experiences.

+

I hope that this guide will be a valuable resource for modders who are interested in using LLMs to create new and exciting mods for their favorite games.

+

Structure

+

I will divide this into 3 sections.

+
    +
  • LLM Modding 101 : Will give overall introduction and required things
  • +
  • LLM Modding 201 : Will focus on explaining different LLM types and will focus on their pros ad cons.
  • +
  • LLM Modding 301 : Will explain architecture types, give detailed information about known LLM types and some reasoning behind all.
  • +
  • LLM Modding 401 : Will focus mostly on using Inworld and discuss it's pros-cons and how-to's
  • +
+ + + + + + +
+
+ + + + +
+ + + +
+ +
+ + +
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/resource/diagrams/inworldsystem.png b/resource/diagrams/inworldsystem.png new file mode 100644 index 0000000..9dfc34c Binary files /dev/null and b/resource/diagrams/inworldsystem.png differ diff --git a/resource/diagrams/localmodelllm.png b/resource/diagrams/localmodelllm.png new file mode 100644 index 0000000..f08324e Binary files /dev/null and b/resource/diagrams/localmodelllm.png differ diff --git a/resource/diagrams/onlinemodel.png b/resource/diagrams/onlinemodel.png new file mode 100644 index 0000000..ff09246 Binary files /dev/null and b/resource/diagrams/onlinemodel.png differ diff --git a/resource/diagrams/servicellm.png b/resource/diagrams/servicellm.png new file mode 100644 index 0000000..ea9ffbc Binary files /dev/null and b/resource/diagrams/servicellm.png differ diff --git a/resource/icon.png b/resource/icon.png new file mode 100644 index 0000000..1a01441 Binary files /dev/null and b/resource/icon.png differ diff --git a/resource/images/brands.jpg b/resource/images/brands.jpg new file mode 100644 index 0000000..ed35d27 Binary files /dev/null and b/resource/images/brands.jpg differ diff --git a/resource/images/brandsonline.jpg b/resource/images/brandsonline.jpg new file mode 100644 index 0000000..09f4c86 Binary files /dev/null and b/resource/images/brandsonline.jpg differ diff --git a/resource/images/brandsservice.jpg b/resource/images/brandsservice.jpg new file mode 100644 index 0000000..3cd54be Binary files /dev/null and b/resource/images/brandsservice.jpg differ diff --git a/resource/images/genimg.jpeg b/resource/images/genimg.jpeg new file mode 100644 index 0000000..2ca9a5d Binary files /dev/null and b/resource/images/genimg.jpeg differ diff --git a/resource/images/genimg2.jpeg b/resource/images/genimg2.jpeg new file mode 100644 index 0000000..174dbef Binary files /dev/null and b/resource/images/genimg2.jpeg differ diff --git a/resource/images/genimg3.jpeg b/resource/images/genimg3.jpeg new file mode 100644 index 0000000..3b7a38d Binary files /dev/null and b/resource/images/genimg3.jpeg differ diff --git a/resource/images/genimg4.jpeg b/resource/images/genimg4.jpeg new file mode 100644 index 0000000..197c3c2 Binary files /dev/null and b/resource/images/genimg4.jpeg differ diff --git a/resource/images/genimg5.jpg b/resource/images/genimg5.jpg new file mode 100644 index 0000000..c640b49 Binary files /dev/null and b/resource/images/genimg5.jpg differ diff --git a/resource/images/inworldbanner.jpg b/resource/images/inworldbanner.jpg new file mode 100644 index 0000000..e19b3a0 Binary files /dev/null and b/resource/images/inworldbanner.jpg differ diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..4f798de --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,123 @@ + + + + https://bloctheworker.github.io/llm-modding-guide/index.html + 2023-10-19 + daily + + + + + + https://bloctheworker.github.io/llm-modding-guide/101.html + 2023-10-19 + daily + + + + + + https://bloctheworker.github.io/llm-modding-guide/201.html + 2023-10-19 + daily + + + + + + https://bloctheworker.github.io/llm-modding-guide/301.html + 2023-10-19 + daily + + + + + + https://bloctheworker.github.io/llm-modding-guide/401.html + 2023-10-19 + daily + + + + + + https://bloctheworker.github.io/llm-modding-guide/tr/index.html + 2023-10-19 + daily + + + + + + https://bloctheworker.github.io/llm-modding-guide/tr/101.html + 2023-10-19 + daily + + + + + + https://bloctheworker.github.io/llm-modding-guide/tr/201.html + 2023-10-19 + daily + + + + + + https://bloctheworker.github.io/llm-modding-guide/tr/301.html + 2023-10-19 + daily + + + + + + https://bloctheworker.github.io/llm-modding-guide/tr/401.html + 2023-10-19 + daily + + + + + + https://bloctheworker.github.io/llm-modding-guide/de/index.html + 2023-10-19 + daily + + + + + + https://bloctheworker.github.io/llm-modding-guide/de/101.html + 2023-10-19 + daily + + + + + + https://bloctheworker.github.io/llm-modding-guide/de/201.html + 2023-10-19 + daily + + + + + + https://bloctheworker.github.io/llm-modding-guide/de/301.html + 2023-10-19 + daily + + + + + + https://bloctheworker.github.io/llm-modding-guide/de/401.html + 2023-10-19 + daily + + + + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000..ce7ab35 Binary files /dev/null and b/sitemap.xml.gz differ diff --git a/stylesheets/extra.css b/stylesheets/extra.css new file mode 100644 index 0000000..98bccc1 --- /dev/null +++ b/stylesheets/extra.css @@ -0,0 +1,16 @@ +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300&display=swap'); + + +[data-md-color-scheme=slate] { + --md-default-bg-color: #0d0e1e !important; + } + + +* { + font-family: 'Poppins', sans-serif; +} + + +img { + border-radius: 0.7rem; +} \ No newline at end of file diff --git a/tr/101.html b/tr/101.html new file mode 100644 index 0000000..68965e3 --- /dev/null +++ b/tr/101.html @@ -0,0 +1,643 @@ + + + + + + + + + + + + + + + + + + + + + + + + LLM Modlama 101 - LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ + + + +

LLM Modlama 101

+
+ Kapak Resmi +
+ +

Giriş

+

Bu bölümde, LLM ile modlama temellerinden bahsedeceğim. Bazı kısımlar çok açık olabilir, ancak bu daha genel bir rehber olduğu için, aklıma gelen hemen hemen her şeyi belirtmeliyim diye düşünüyorum. "Ee herhalde" kısımları için okumayı atlayabilir ve devam edebilirsiniz.

+

LLM ile modlama, oyunlarınıza daha gerçekçi konuşmalar ve unutulmaz anılar eklemenin mükemmel bir yoludur. LLM'ler, diyaloglar, açıklamalar ve hatta tüm hikayeler oluşturmak için kullanılabilir. Ayrıca yeni karakterler, konumlar ve görevler oluşturmak için de kullanılabilirler.

+

İşte LLM'lerle modlamayı kullanmanın bazı avantajları:

+
    +
  • LLM'ler, geleneksel betikleme yöntemlerinden daha gerçekçi ve etkileyici diyaloglar oluşturabilir.
  • +
  • LLM'ler, oyuncuların seveceği karmaşık ve unutulmaz karakterler yaratabilir.
  • +
  • LLM'ler, oyununuza yeni içerikler, hikayeler, görevler ve konumlar oluşturmak için kullanılabilir.
  • +
  • LLM'ler, oyununuzun yazılı içeriğinin genel kalitesini artırmak için kullanılabilir.
  • +
+

Bazı Bilgiler

+

LLM Nedir?

+

LLM, yani başka bir deyişle, Büyük Dil Modelleri, büyük bir metin ve kod veri setinde eğitilmiş modellerdir.

+

GPT Nedir?

+

GPT, Generative Pre-trained Transformer'ın kısaltmasıdır. GPT, bir LLM türüdür. GPT, metin oluşturmak, dilleri çevirmek, farklı türlerde yaratıcı içerik yazmak ve bilgilendirici bir şekilde sorularınıza yanıt vermek için kullanılabilir.

+

GPT Neden Bu Kadar Çok Dikkat Çekiyor?

+

GPT, şimdiye kadar yaratılan en güçlü ve çok yönlü dil modellerinden biri olduğu için bu kadar çok dikkat çekmektedir. Gerçekçi ve etkileyici diyaloglar oluşturmak, karmaşık ve unutulmaz karakterler oluşturmak ve oyunlar için yeni içerikler yazmak dahil olmak üzere çeşitli görevler için kullanılabilir.

+

GPT, LLM'ler Yerine mi Kullanılıyor?

+

GPT, bir LLM türü olduğu için, LLM'ler yerine kullanılmaz. Ancak, GPT genellikle diğer LLM'lerden daha fazla tercih edilir çünkü OpenAI'nin (GPT 3.5+) kamuya açık bir API'si aracılığıyla kullanılması çok kolaydır.

+

Bu Rehber Neden Çoğunlukla LLM'lere Odaklanıyor?

+

Bu rehber çoğunlukla LLM'lere odaklanıyor çünkü LLM modlaması günümüzde oldukça yeni bir konu ve modladığınız oyun ne olursa olsun takip etmeniz gereken bazı ortak ana noktaları paylaşıyor.

+

GPT veya Herhangi Bir LLM Kullanmadan Sinir Ağlarını Nasıl Kullanabilirim?

+

GPT veya herhangi bir LLM kullanmadan sinir ağlarını kullanmanın birçok yolu vardır. Örneğin, sinir ağlarını resimleri sınıflandırmak, müzik oluşturmak veya dilleri çevirmek için kullanabilirsiniz. +Bir sinir ağı kullanmak için, onu bir veri seti üzerinde eğitmeniz gerekecektir. Resimleri sınıflandırmak için bir sinir ağı kullanmak istiyorsanız, onu bir resim veri setinde eğitmeniz gerekecektir. Sinir ağı eğitildikten sonra, onu yeni veriler üzerinde tahminler yapmak için kullanabilirsiniz. Örneğin, bir sinir ağı resimleri sınıflandırmak için eğittiyse, daha önce hiç görmediğiniz yeni resimleri sınıflandırmak için onu kullanabilirsiniz.

+

Karakter Motoru Nedir?

+

Karakter motorları, geliştiricilere yapay zeka destekli NPC'ler oluşturmak için gereken zamanı, çabayı ve kaynakları büyük ölçüde azaltmalarına yardımcı olur. Temelde, generatif yapay zeka karakter oluşturma için bir oyun motoru gibi işlev görür.

+

LLM'lerin En Büyük Zorlukları

+

LLM'ler, birkaç önemli zorlukla karşılaşır, bunlar:

+
    +
  • Önyargı: LLM'ler, üzerinde eğitildikleri verilerde bulunan önyargıları yansıtabilir.
  • +
  • Güvenlik: LLM'ler, nefret söylemi veya yanıltıcı bilgiler gibi zararlı içerikler oluşturmak için kullanılabilir.
  • +
  • Maliyet: LLM'leri eğitmek ve konuşlandırmak pahalı olabilir.
  • +
+

Veri ve Bilgi Nedeniyle Kendi Sinir Ağınızı Eğitmenin Zor Olması

+

Kendi sinir ağınızı eğitmenin zor olmasının nedeni, veri ve bilgi gereksinimleridir. Sinir ağları, büyük miktarda veri üzerinde eğitilmelidir ve etkili eğitim için yeterli veri toplamak zor ve pahalı olabilir.

+

Ayrıca, kendi sinir ağınızı başarıyla eğitmek için makine öğrenmesi ve sinir ağları hakkında bilgi gereklidir. Bu bilgiye sahip değilseniz, bir sinir ağı eğitmek zorlu bir görev olabilir.

+

LLMleri Kullanabilir Miyim?

+

graph LR
+  A[Başlangıç] --> B{Oyun herhangi bir türde modlamayı destekliyor mu?};
+  B -->|Evet| C[Herhangi bir kodlama içeren modları oluşturmayı biliyor musunuz?];
+  C -->|Hayır| E;
+  C -->|Evet| D[Oyundaki modlama, soket bağlantısı veya HTTP çağrılarına izin veriyor mu?];
+  D -->|Hayır| E;
+  D -->|Evet| F[LLM'leri kullanabilirsiniz];
+  B ---->|Hayır| E[LLM'leri kullanamazsınız];
+LLM ile modlama, her oyun için doğru olmayabilir. LLM ile oyununuzu modlamaya karar vermeden önce dikkate almanız gereken birkaç şey şunlardır:

+
    +
  • Oyununuz modlanabilir mi? Tüm oyunlar modlanabilir değildir. Bazı oyunlarda mod desteği yerleşik olarak bulunurken, diğerleri üçüncü taraf araçları gerektirir. Oyununuz modlanabilir değilse, onu LLM ile modlamak için kullanamazsınız.
  • +
  • Oyununuzun bir modlama topluluğu var mı? Tüm oyunların bir modlama topluluğu yoktur ve hatta varsa bile, topluluk aktif veya destekleyici olmayabilir. Oyununuz için bir modlama topluluğu yoksa, sorunlarla karşılaştığınızda yardım ve desteği bulmak daha zor olacaktır. Özellikle o oyun için deneyimli bir modder değilseniz.
  • +
  • Hedefleriniz neler? Oyununuzu LLM ile modlayarak neyi başarmayı umuyorsunuz? Diyalogları iyileştirmek, yeni karakterler eklemek veya yeni içerik oluşturmak mı istiyorsunuz? Hedeflerinizi bildiğinizde, onları gerçekleştirmek için LLM'yi en iyi şekilde nasıl kullanabileceğinizi düşünmeye başlayabilirsiniz.
  • +
+

Başlamadan Emin Olun

+

Oyununuzu LLM ile modlamaya başlamadan önce, gerekli tüm araç ve kaynaklara sahip olduğunuzdan emin olmak önemlidir. Kontrol etmeniz gereken birkaç şey şunlar:

+
    +
  • En son LLM sürümüne sahip olduğunuzdan emin olun. LLM sürekli olarak güncellenmektedir, bu yüzden en son sürüme sahip olduğunuzdan emin olmanız önemlidir. Eğer çevrimiçi modelleri kullanıyorsanız, bu genellikle sizin kontrolünüzde olmaz - ki bu, hedefinize bağlı olarak iyi veya kötü olabilir.
  • +
  • LLM'yi nasıl kullanacağınızı iyi bir şekilde anladığınızdan emin olun. Çevrimiçi olarak kullanabileceğiniz birçok öğretici ve kaynak vardır ki bu, LLM'yi nasıl kullanacağınızı öğrenmenize yardımcı olabilir. Kendi sunucunuzu bazı LLM sürümü (Llama vb.) ile oluşturuyorsanız, bunun nasıl çalıştığını bilmeli ve API'nizi buna göre ayarlamalısınız. Her iki durumda da belli bir uzmanlık gereklidir.
  • +
  • Oyununuz için modlama araçlarını iyi bir şekilde anladığınızdan emin olun. Her oyunun kendi modlama araçları ve süreçleri vardır, bu yüzden onları nasıl kullanacağınızı anlamanız önemlidir. Eğer bunu nasıl kullanacağınızı bilmiyorsanız, ilk hedefinizin bunu kontrol etmek ve öğrenmek olması gerektiğidir. Hatta oyun X'te deneyimli bir modder bile olsanız, bu, oyun Y'de de harika olacağınızı garanti etmez.
  • +
+

Temeller

+

LLM modlamaya başlamak için, birkaç temel şeyi bilmelisiniz:

+
    +
  • İstek becerileri: LLM, büyük bir metin ve kod veri setinde eğitilmiştir, ancak yine de metin oluşturmak için istekte bulunması gerekmektedir. En iyi sonuçları elde etmek için etkili istekler yazmayı öğrenmeniz gerekecektir. Bu gerekliliği belirli hizmetler için (Örneğin Inworld) ortadan kaldırabilirsiniz ancak kendi sistemlerinizi kullanmayı planlıyorsanız, bu bir zorunluluktur.
  • +
  • Kodlama becerileri: Bazı LLM modlamaları, bazı kodlama becerilerini gerektirecektir. Örneğin, LLM'yi oyununuza entegre etmek veya özel istekler oluşturmak için kod yazmanız gerekebilir.
  • +
+

LLM ve kodlama hakkında temel bir anlayışa sahip olduğunuzda, oyununuzu modlamayı denemeye başlayabilirsiniz. Oyununuzu modlamak için LLM'yi kullanmanın birçok yolu vardır, bu yüzden yaratıcı olun ve eğlenin!

+

İşte LLM modlaması için bazı ek ipuçları:

+
    +
  • Küçükten başlayın. Tüm oyununuzu bir anda modlamayı denemeyin. Oyununuzun küçük bir kısmını, örneğin tek bir karakteri veya görevi modlamaya başlayın. Bu, ipuçlarını öğrenmenize ve olası herhangi bir sorunu belirlemenize yardımcı olacaktır.
  • +
  • Sık sık test edin. Oyununuza bazı değişiklikler yaptıktan sonra, onları iyice test ettiğinizden emin olun. Bu, oluşturmuş olabileceğiniz herhangi bir hatayı veya sorunu belirlemenize yardımcı olacaktır.
  • +
  • Başkalarından geri bildirim alın. Değişikliklerinizi test ettikten sonra, onları başkalarıyla paylaşın ve geri bildirim alın. Bu, modunuzun nerede geliştirilebileceğini belirlemenize yardımcı olacaktır.
  • +
+

LLM modlaması çok eğlenceli olabilir ve oyunlarınızı geliştirmenin harika bir yoludur. Biraz çaba ile, oyunlarınızı kendiniz ve diğerleri için daha keyifli hale getirecek modlar oluşturabilirsiniz.

+ + + + + + +
+
+ + + + +
+ + + +
+ +
+ + +
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/tr/201.html b/tr/201.html new file mode 100644 index 0000000..b827588 --- /dev/null +++ b/tr/201.html @@ -0,0 +1,563 @@ + + + + + + + + + + + + + + + + + + + + + + + + LLM Modlama 201 - LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ + + + +

LLM Modlama 201

+
+ Kapak Resmi +
+ +

Yerel, Çevrimiçi veya Hizmet Modelleri?

+

LLM'lerle modlama söz konusu olduğunda birden çok seçeneğiniz var. Bu sınıflandırma bazıları için tatmin edici olmayabilir, ancak ben bunları böyle sınıflandırmak istiyorum ve işte her biri hakkında bazı detaylar:

+
    +
  • Yerel LLM Modelleri: İnternete bağlantı gerektirmeyen ve tüm hesaplamaların tüketici çalışma zamanında gerçekleştiği, tüketici sınıfı PC'lerde çalışan modellerdir.
  • +
  • Çevrimiçi LLM Modelleri: Donanım sınırlamaları veya yasal sınırlamalar nedeniyle bunları tüketici donanımında çalıştıramadığınız modellerdir ve bunları çevrimiçi olarak çalıştırmanız gerekmektedir.
  • +
  • Hizmet LLM Modelleri: Belirli alanlarda uzmanlaşmış ve geliştiricilerin kullanabilmesi için bir API sunan modellerdir. Bu, LLM sistemlerinin bazı zahmetli yönlerini denklemden çıkarır (Örnek: Inworld AI).
  • +
+

Bunların karışımı olan bazı modeller bulmuş olabilirsiniz, ancak bunlar için ayrı bir kategori oluşturmaya gerek yok. Aşağıdaki bölümde, her bir kategori modelini bildiğim kadarıyla ayrıntılı olarak açıklamaya çalışacağım ve her birinin artılarını ve eksilerini belirteceğim.

+

Yerel Modeller Hakkında

+

Temel Mimari Dizaynı

+

Yerel LLM Diyagramı

+

Artıları:

+

Yerel modeller genellikle sürekli bir internet bağlantısı gerektirmezler. Bu, gizlilik konusunda endişeli olan kullanıcılar için faydalıdır. Ayrıca, modellerin çoğu herhangi bir kısıtlama olmadan çalıştırılabilir, bu da daha az sansürlü modellerin modlarda çalıştırılmasına izin verir - bu, aklınızda bulunan mod konseptinin türüne bağlı olarak harika olabilir (örneğin, birçok AI modeli, bazı koruma raylarını çıkarmadıkça şiddeti onaylamaz). Ayrıca ücretsizdirler, çünkü her şey yerel olarak gerçekleşir, bu yüzden kullanıcıların bir şey ödemesi gerekmez.

+

Eksileri:

+

Genellikle yerel modeller iki kalitede gelir - büyük parametreli modeller ve küçük parametreli modeller. Büyük parametreli modeller genellikle çalıştırmak için çok yüksek seviye donanıma ihtiyaç duyar (en azından 100sGB RAM ve benzeri) ve donanımda çok büyük bir depolama alanı kaplar. Bu, beklendiği gibi, şu anki mod kullanıcılarının her birine cazip gelmeyebilir ve yalnızca oyuncu tabanının bir kısmını mod kullanıcıları olarak hedef alırsınız. Küçük parametreli modeller için ise, çoğu durumda daha az güçlü makineler gerektirirler. Ancak, hala yaklaşık 16GB RAM, iyi bir GPU ve oldukça büyük depolama alanı gerektirirler. Ne yazık ki, bu küçük parametreli modellerin cevaplarının kalitesi de çok tartışmalıdır (en azından benim gözlemlediğim kadarıyla, iyi değiller). GPT-Q ve GGML model versiyonlarını bulabilirsiniz, bu da tüketici özelliklerine bağlı olarak yardımcı olabilir, ancak yine de her kategoride iyi seviye donanıma ihtiyacınız vardır. GPT-Q, CUDA çıkarım modelleri için (temelde GPU) ve GGML, CPU için tasarlanmıştır. Ayrıca, tüketici donanımında çalışabilen modeller vardır, burada 4GB VRAM veya 16GB RAM gerektirir ve "Harika, yani çalışıyor" diyebilirsiniz, ancak modelleri çalıştırmanın tek gereklilik olmadığını unutabilirsiniz. Modelleri ve oyunu aynı anda çalıştırmamız gerekiyor ve bu, oyun performansını etkilemeksizin (sınırlı RAM/VRAM nedeniyle) bunu yapmak yüksek seviye donanım gerektirir, ki çoğu kişi bunlara sahip değildir. Ayrıca, bu yerel modelleri kurmak genellikle oyuncunun donanımına çok fazla yardımcı yazılım yüklemeyi gerektirir, bu da onların modlarından keyif almadan önce tamamlamaları gereken adımları artırır. Mod kullanıcılarının çoğu yazılım geliştirici olmadığından, sizin gibi ortamlarını kurmakta zorlanacaklar, bu da modunuzdan keyif alabilecek oyuncu sayısını azaltacaktır. Ayrıca, tüm yerel modeller, Çevrimiçi veya Hizmet modellerinin sunduğu yan faydaları eksik eder, örneğin TTS/STT veya eylem sistemleri, sesler vb. En iyi yanıtları almak için modunuzun yerel modeli bu yapıda çağırmasına izin veren LLM uyandırma öğrenmeniz gerekiyor.

+

Çevrimiçi Modeller Hakkında

+

Temel Mimari Dizaynı

+

Çevrimiçi Model Diyagramı

+

Artıları:

+

Çevrimiçi modellerin iki alt kategorisi olabilir: kullanıma hazır çevrimiçi modeller, örneğin OpenAI'nin API'si, veya özel çevrimiçi modeller, örneğin yerel modellerinizi bulut sağlayıcınızda çalıştırma ve bu API'yi mod geliştiricilere açma. Bu seçeneklerin her ikisinin de ortak bir avantajı vardır: İcra yükünü tüketici donanımından alırlar. Bu, PC özelliklerinden bağımsız olarak, modu oynayabildikleri sürece LLM'leri de kullanabilecekleri anlamına gelir. Ayrıca, genellikle kullanıcıların kurulumu daha kolaydır çünkü mod oluşturucu olarak sadece API'yi çağırırsınız ve onların ekstra bir şey yapmalarına gerek kalmaz. Güncelleme bakımından da, daha iyi bir sürüm çıktığında GB'larca veriyi güncelleme olarak itmek zorunda kalmazsınız; sadece sunucuda güncelleyebilir veya kullanıma hazır bir model kullanıyorsanız, otomatik olarak güncellenir.

+

Eksileri:

+

Kullanıcıların bunu kullanabilmesi için internete bağlı olması gerekiyor - yani sürekli internet bağlantısı şart. Kullanıma hazır çevrimiçi modeller genellikle ücretsiz değildir ve abonelik gerektirir. Başka bir deyişle, kullanıcıların kullanım için ödeme yapması ve bir sayfaya kaydolması ve kullanıcı arayüzünde bazı ekstra işler yapması gerekiyor, ki bu birçok kullanıcı tarafından tercih edilmez çünkü bu bir ekstra adımdır. Özel çevrimiçi modeller için ise, siz (mod geliştirici olarak) çok güçlü bir donanıma sahip bir VM'yi bir bulut sağlayıcıdan kiralamanız ve yukarıda açıklanan tüm yerel model adımlarını izlemeniz gerekir. Ek olarak, gelen çağrıları işleyip onları yerel model işlemcinize yönlendirebilecek ve yanıtı çağrı yapan kişiye geri gönderebilecek kendi API arayüzünüzü yazmanız gerekir. Tahmin edebileceğiniz gibi, bu mod oluşturucular için ekonomik olarak uygulanabilir değildir, çünkü böyle bir sunucuyu çalıştırmak çok para mal olabilir. Artı, şimdi temelde performanslı bir web API yazmayı öğrenmeniz gerekiyor - ki bu daha çok işle ilgili bir beceriden ziyade bir hobi-modlama becerisidir. Ayrıca, en iyi yanıtları almak için modunuzun yerel modeli bu yapıda çağırmasına izin veren LLM uyandırma öğrenmeniz gerekiyor. Yerel modellere benzer şekilde, çevrimiçi modellerin çoğu TTS/SST ve duygular gibi ekstra özelliklerle gelmez.

+

Hizmet Modelleri Hakkında

+

Temel Mimari Dizaynı

+

Hizmet Modeli Diyagramı

+

Artıları:

+

Hizmet modelleri genellikle konuşma amaçlı karakterler oluşturmak için özelleştirilmiştir, bu da bu hizmetleri kullanmak için az veya hiç uyandırma becerisine ihtiyaç duymadığınız anlamına gelir. Bu, basit görünse de, geliştiricilerin omuzlarından büyük bir iş yükünü kaldırır. Çevrimiçi modellere benzer şekilde, ayrıca kullanıcılar için zahmetli kurulum adımlarını da ortadan kaldırırlar çünkü kullanıcılar için yerel bir kurulum gerekmez. Genel mimari, geliştiriciler için sadece başka bir API çağrısı olduğu için daha basit olacaktır. Ayrıca, bu hizmetler profesyonel şirketler tarafından sürdürüldüğünden, kullanım durumunuza bağlı olarak kaba uygulama detaylarını soyutlayan kendi SDK'larına sahip olurlar. Ayrıca, hizmet modelleri, herkesin donanım gücünden bağımsız olarak LLM'leri kullanabilmesini sağlar, çünkü çevrimiçi modellere benzer şekilde, hizmet modelleri icra yükünü oyuncunun donanımından kaldırır. Tüm hizmet modelleri bunu sunmasa da, Inworld gibi hizmetler TTS/SST, Elevenlabs entegrasyonu, duygular, bellek ve daha fazlasını kutudan çıkar gibi sunar, LLM ile modun yeteneklerini önemli ölçüde zenginleştirir. Hizmet modellerinin doğası gereği, çevrimiçi modellere kıyasla daha maliyet bilincine sahiptirler, çünkü hedef kitleleri geliştiriciler değil, son kullanıcılardır. Hizmet modellerinin kayıt, ödeme ve kurulum süreçleri genellikle müşteri-öncelikli bir zihniyetle tasarlanmıştır, bu da kullanıcıların benzer UI/UX sayfaları nedeniyle kullanıcı kabulünü kolaylaştırır. Hizmet modelleri, kendi sunucularını kurmalarına veya altyapı için ödeme yapmalarına gerek olmadığı için mod geliştiricilerinden herhangi bir çaba gerektirmez, sadece hizmet uç noktalarını kullanır, bu da mod oluşturucuları için geliştirmeyi önemli ölçüde kolaylaştırır.

+

Eksileri:

+

Çevrimiçi modellere benzer şekilde, kullanıcıların hizmet modellerini kullanabilmesi için internete bağlı olması gerekiyor, ki bu bazı kullanıcılar tarafından tercih edilmez. Hizmet modelleri genellikle ücretli abonelik gerektirir, ancak Inworld gibi hizmetler çoğu kullanım durumu için Ücretsiz katmanlar sunar. Yine de, bu sistemler kayıt gerektirir, bu da kullanıcılar için ekstra bir adımdır.

+ + + + + + +
+
+ + + + +
+ + + +
+ +
+ + +
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/tr/301.html b/tr/301.html new file mode 100644 index 0000000..2fb17f7 --- /dev/null +++ b/tr/301.html @@ -0,0 +1,602 @@ + + + + + + + + + + + + + + + + + + + + + + + + LLM Modlama 301 - LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ + + + +

LLM Modlama 301

+
+ Kapak Resmi +
+ +

Model veya Servis Seçimi

+

Model veya servis seçiminde günümüzde birden çok seçeneğimiz bulunmaktadır. Ayrıca, bu belgenin tamamlanmasının ardından daha fazla seçenek ortaya çıkacaktır, bu yüzden bu listayı tamamen güncel bir liste yerine bugünün bir anlık görüntüsü olarak kullanmanızı öneririm. Hangi servisin veya çevrimiçi modelin ne olduğundan emin değilseniz, konuyu anlamak için lütfen LLM Modlama 201 sayfasını ziyaret edin.

+
+ +

Ekim 2023 İtibarıyla Olası Seçenekler

+

Yerel Modeller

+
+ Brands +
+ +

Bir SÜRÜ yerel model var, çoğunlukla temel modellerden türetilen ve ince ayar yapılmış modeller. Burada, temel modelleri listeleyeceğim:

+
    +
  • +

    Falcon:
    +Falcon, Abu Dabi'deki Teknoloji İnovasyon Enstitüsü (TII) tarafından geliştirilen genişleyebilen büyük dil modelleri (LLM'ler) serisidir. Falcon modelleri, yüksek performans ve ölçeklenebilirlik sağlamak için çoklu sorgu dikkatini ve özel bir veri hattını kullanır. Falcon modelleri, çeşitli alanlarda ve görevlerde metin oluşturabilir.

    +
  • +
  • +

    LLaMA:
    +LLaMA, Meta'nın (eski adıyla Facebook) yayınladığı temel büyük dil modelleri (LLM'ler) serisinin kısaltmasıdır. LLaMA modelleri, Latin ve Kiril alfabesi olan 20 dilden büyük bir etiketsiz veri setinde eğitilmiştir. LLaMA modelleri, döner pozisyon gömme ve paralel hesaplama kullanarak verimliliği ve çok yönlülüğü artırır. LLaMA 2, oldukça yakın bir zamanda açık kaynak hale geldi.

    +
  • +
  • +

    MPT:
    +MPT, MosaicML tarafından geliştirilen büyük dil modelleri (LLM'ler) serisinin kısaltmasıdır. Makine öğrenme modelleri oluşturma ve dağıtma platformu olan MosaicML, MPT modellerini geliştirdi. MPT modelleri, ALiBi (Dikkatli Lineer Önyargılar) ve FlashAttention ile modifiye edilmiş bir transformer mimarisi kullanır. Bu sayede, bağlam uzunluk sınırlarını ortadan kaldırır ve hızı optimize eder. MPT modelleri, metin ve kod verilerinin karışımında eğitilmiştir ve çeşitli görevler için ince ayar yapılabilir.

    +
  • +
  • +

    GPT-J:
    +GPT-J, 2021'de EleutherAI tarafından geliştirilen açık kaynaklı bir büyük dil modeli (LLM)dir. Bir isteğe devam eden insan gibi metin üretmek üzere tasarlanmış bir generatif ön eğitimli transformer modelidir. 6 milyar parametreye sahiptir ve yoğun dikkat, döner pozisyon gömme ve paralel hesaplama kullanır. Çeşitli kaynaklardan ve alanlardan metin içeren Pile veri setinde eğitilmiştir.

    +
  • +
  • +

    GPT-Neo:
    +GPT-3'ün açık kaynaklı bir replikası olan ve çeşitli alanlarda ve görevlerde metin oluşturabilen 2.7 milyar parametreli bir modeldir. GPT-Neo, 2021'de EleutherAI tarafından geliştirilen açık kaynaklı bir büyük dil modeli (LLM)dir. GPT-2 ve GPT-3 tarzında bir model paralel modeli olan mesh-tensorflow kütüphanesini kullanır. Doğal dil anlama, doğal dil oluşturma ve konuşmacı AI gibi çeşitli alanlarda ve görevlerde metin oluşturabilir. İki versiyonu vardır: biri 1.3 milyar parametreli, diğeri 2.7 milyar parametreli. Her iki katmanda yerel dikkat kullanır ve pencere boyutu 256 belirtedir. Kitaplar, haberler, Wikipedia ve kod gibi 26 çeşitli kaynaktan metin içeren Pile veri setinde eğitilmiştir.

    +
  • +
+

Temel modellerin yanı sıra, Hugging Face, bu temel modellerin hemen hemen her biri için açık kaynaklı ince ayarlı modeller sunar. Buradan bulabilirsiniz.

+
+ +

Çevrimiçi Modeller

+
+ Brands +
+

Yalnızca bir API üzerinden kullanılabilecek çevrimiçi modelleri listeleyeceğim. Bu, Bard veya Bing Chat'in bu listeye dahil olmayacağı anlamına gelir.

+
    +
  • +

    OpenAI: OpenAI, GPT-4, ChatGPT 3.5 Turbo ve DALL·E (metin açıklamalarından resimler oluşturan bir generatif model) ve OpenAI Whisper (sesi metne dönüştüren bir araç, STT dönüşümü için harika) gibi çeşitli ürünler ve hizmetler sunar. OpenAI API'si, kullanıcının sunucularla iletişim kurmak için kimlik bilgilerini veya API Anahtarını sağlaması şartıyla, LLM modlama amaçlarımız için kullanılabilir.

    +
  • +
  • +

    MosaicML: MosaicML, generatif AI modellerinizi güvenli bir ortamda oluşturmanızı ve konuşlandırmanızı sağlayan bir platformdur. MosaicML, kutudan çıkar çıkmaz kullanılabilecek veya verilerinizde ince ayar yapılabilecek açık kaynaklı, ticari lisanslı LLM'ler olan MPT Foundation Series'i sunar. MosaicML Inference, LLM'leri güvenli bir şekilde konuşlandırmanıza ve 15 kata kadar maliyet tasarrufu yapmanıza olanak sağlayan bir hizmettir ve MosaicML Training, tek bir komutla kendi son teknoloji modellerinizi önceden eğitmenize veya ince ayar yapmanıza ve birden çok bulut arasında düzenlemenize olanak sağlayan bir hizmettir.

    +
  • +
  • +

    DeepInfra: DeepInfra, çeşitli LLM'ler ve gömme modellere erişim sağlayan bir sunucusuz çıkarım hizmetidir. Llama 2, GPT-J, GPT-Neo ve Falcon modellerini API uç noktaları olarak kullanabilirsiniz.

    +
  • +
  • +

    Replicate: Replicate, açık kaynaklı makine öğrenme modellerini bir bulut API'si ile çalıştırmanıza olanak sağlayan bir platformdur. Replicate, dil modelleri, video oluşturma ve düzenleme modelleri, süper çözünürlük modelleri, görüntü restorasyon modelleri, görüntüden metne modeller ve metinden görüntüye modeller dahil binlerce modeli paylaşan bir makine öğrenme meraklıları topluluğuna sahiptir. Replicate ayrıca, makine öğrenme modellerini standart, üretim için hazır bir konteynere paketlemenizi sağlayan açık kaynaklı bir araç olan Cog'u sunar. Replicate'de Llama2, GPT-J ve Falcon'u da çalıştırabilirsiniz.

    +
  • +
+
+ +

Servis Modelleri

+
+ Brands +
+

Sadece bildiğim veya tecrübe ettiğim servis modellerini listeleyeceğim, ancak bu kesinlikle tam bir liste değil. Bu listeyi genişletmek isterseniz, çekme isteği yapmaktan çekinmeyin.

+
    +
  • +

    Inworld AI:
    +Inworld AI, AI NPC'ler için önde gelen Karakter Motorudur. Oyunlarda ve sanal dünyalarda oyuncu olmayan karakterlere (NPC'ler) zeki diyalog yeteneği kazandırır, onları daha zeki ve insana benzeyen hale getirir ve kullanıcılarla etkileşim yeteneklerini artırır. Inworld'u kullanırken, kutudan çıkar çıkmaz LLM karakter desteği, birden çok gerçekçi sesle metinden konuşmaya, mikrofonla sohbeti dönüştürme için konuşmadan metne desteği, duygular ve bir eylem sistemi (modların interaktif hale getirilmesi için) alırsınız. Inworld ayrıca bunların tümünü, kullanıcıların kredi kartı bilgilerini bile vermeden kullanabilecekleri ücretsiz bir katmanda sunar. Ücretsiz katman, ayda 5.000 ücretsiz API etkileşimi sağlar, bu da herhangi bir mod için yeterli olur (deneyimime dayanarak). Ayrıca, kullanıcıların portalda belirli şeyleri konuşmak veya ayarlamak için hiçbir ekstra ücret ödemeden sınırsız stüdyo etkileşimi sunarlar. Belirli oyun motorları için birçok SDK'ları vardır, bu modderlar için süper yardımcı olmayabilir, ancak ayrıca bir Node.js SDK'ları ve kolayca kullanılabilen doğrudan uç nokta çağrıları da sağlarlar. Oyununuz bunu destekliyorsa, dudak senkronizasyonu verileri de sağlarlar. Sadece bu değil, ayrıca sesler için sorunsuz elevenlabs desteği de var, yani eğer elevenlabs'ta yüksek kaliteli sesleriniz varsa, kolayca kullanılabilirler.

    +
  • +
  • +

    ChatFAI:
    +ChatFAI, kullanıcıların filmlerden, TV şovlarından, kitaplardan ve daha fazlasından favori karakterleriyle konuşmalarına olanak sağlayan bir AI destekli sohbet botu platformudur. Kullanıcı girişine yanıt oluşturmak için doğal dil işleme algoritmalarını kullanır. Özel karakter oluşturmayı desteklerler. Ayrıca bir ücretsiz planları da var; ancak, ücretsiz planları, gerçek mod kullanımı için (Eylül 2023 itibarıyla) kullanılamaz çünkü ayda yalnızca 250 mesaj sağlar ki bu oldukça sınırlıdır.

    +
  • +
  • +

    character.ai:
    +character.ai, bilim kurgu hayalini gerçeğe dönüştürüyor: bilgisayarlarla açık uçlu konuşmalar ve işbirlikleri. Bir sohbet botu web uygulamasıdır ve gerçek insanlarınkine benzeyen metin yanıtlarını üretebilen ve doğal bir konuşma içinde etkileşime girebilen bir neural dil modeline sahiptir. Hayal gücü, beyin fırtınası ve dil öğrenme için kullanılabilir. Teknik olarak kayıt olunduğunda ücretsizdir ve mesaj sınırlaması gibi görünmüyor. c.ai+ modelini sunarlar, bu model daha hızlı yanıt süreleri ve öncelikli erişim sunar (çünkü bazı karakterler çok talep gördüğünde bekleme odası gerektirir). Ne yazık ki, resmi bir API sağlamıyorlar ve açık kaynaklı resmi olmayan bir sürümü kullanmanız gerekiyor, bu da her an bozulabilir ve bu da uzun vadeli destek modları için daha az uygun hale getirir. Herhangi bir TTS/SST sistemi yoktur.

    +
  • +
  • +

    convai:
    +Convai, Inworld AI'ye oldukça benzer; ancak, Inworld'un sunduğu özelliklere sahip gibi görünmüyor. Şu anda, bir ücretsiz katman da sunuyorlar, ancak sınır herkes için yeterli olmayabilir, çünkü günlük 100 etkileşim kotası var. Her mesaj bir etkileşim olarak kabul edilir. Bu, birçok mod için belirli kullanımları sınırlayabilir. Inworld gibi SST/TTS sunarlar ve genel olarak convai'nin ses kalitesi daha iyidir. Inworld gibi belirli oyun motorlarına belirli eklentiler sağlarlar ve doğrudan karakter oluşturma uç noktası da sağlarlar (Inworld'da bekleyen bir özellik). Şu anda Nvidia ile ortaklık yapmaktadırlar ki bu önemlidir.

    +
  • +
  • +

    Kamoto.AI:
    +Kamoto.AI, ünlüleri, etkileyicileri ve kullanıcıları, özelleştirilmiş AI Karakterler oluşturmak, eğitmek ve gelir elde etmek için güçlendirir. Ne yazık ki, herhangi bir API sağlamıyor gibi görünüyorlar, bu yüzden muhtemelen kendi resmi olmayan paketinizi yazmanız gerekecek ki bu genellikle çok fazla iş gerektirir.

    +
  • +
  • +

    NPCx:
    +NPCx, bilgisayar mühendisleri, veri bilimcileri, sanatçılar ve animatörlerden oluşan küresel bir ekip olan ve hikaye anlatıcılarına destek olmak için sonraki nesil Yapay Zeka (AI) teknolojisini kullanır. Video oyunlarındaki Oyuncu Olmayan Karakterlere (NPC'ler) odaklanırlar ve daha zengin, daha çeşitli ve hayat gibi 3D deneyimler sunmayı amaçlarlar, bunu daha kısa sürede ve daha düşük maliyetle yaparlar. Bunun dışında çok fazla bilgi yok. Kamuya açık kaydı yok ve sizinle iletişime geçmeleri gerekiyor. Eylül 2023 itibarıyla bu durumda tam olarak kullanılabilir değiller ancak gelecek vaat ediyorlar.

    +
  • +
+
+ +

Neden Inworld Mantıklı?

+

Bir mod sahibi olarak deneyimlerime dayanarak, birçok insanın uzun kurulum adımlarını okumak için zamanı veya eğilimi olmadığını rahatlıkla söyleyebilirim. Birçok kişi tüm açıklamayı görmezden gelir ve modu doğrudan yüklemeye çalışır. Böyle bir durumda, son istediğiniz şey, kullanıcıların tamamlamayabileceği veya tamamladıktan sonra donanımlarının yeterince güçlü olmadığını fark ettiği çok karmaşık kurulum adımları eklemektir. Daha fazla adım == daha fazla hata, yani mod sahibi için daha fazla iş demektir. Yüksek bulut bilişim ücretlerini ödemeye niyetim olmadığından, yerel modeller benim için bir seçenek değil. Bir sonraki seçenek çevrimiçi modellerdir, ancak bunlar daha iyi yanıtlar için modellerin önceden eğitilmesini gerektirir. Çoğunlukla geliştiriciler için tasarlandıklarından, kayıt/ayar süreci ortalama oyuncular için cazip değildir. Bu koşullar altında, servis modelleri en mantıklı seçim haline gelir.

+

Listeden, Inworld ücretsiz katmanı ve özellik eşleştirme ile öne çıkıyor. Burada önyargılı olduğumu itiraf etmeliyim, çünkü Inworld'u birçok modumda kullandım ve bana birkaç ay boyunca ücretsiz bir geliştirici hesabı verdiler. Ancak, modlarım binlerce kişi tarafından indirildi ve oynandı ve çoğunun bunu tamamen ücretsiz olarak, hiçbir yerde kredi kartı bilgilerini eklemek zorunda kalmadan, keyif aldığını kesin olarak biliyorum. Inworld'un bu esnekliği oyunculara sunduğunu bilmek, ilerlemeyi Inworld ile seçmemin ana nedenlerinden biridir. Bir sonraki bölümde, Inworld'u nasıl kullanacağınıza dair detayları konuşacağız.

+ + + + + + +
+
+ + + + +
+ + + +
+ +
+ + +
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/tr/401.html b/tr/401.html new file mode 100644 index 0000000..34607cd --- /dev/null +++ b/tr/401.html @@ -0,0 +1,602 @@ + + + + + + + + + + + + + + + + + + + + + + LLM Modlama 401 - LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ + + + +

LLM Modlama 401

+
+ inworld +
+

Neden Inworld?

+

Bu bölümün neden Inworld AI ile ilerlediğini merak ediyorsanız, hizmetler ve olası yaklaşımlar arasındaki karşılaştırmayı görmek için lütfen 301 bölümüne göz atın. Artıları ve eksileri masaya yatırdığınızda, Inworld'un en iyi seçenek olarak öne çıktığını düşünüyorum ve bu yüzden üretim modlarımın neredeyse tamamında Inworld'u kullandım.

+

Inworld Hakkında

+

İlk bakışta, "Inworld'un hedef kitlesi çoğunlukla oyun geliştiriciler gibi göründüğüne göre, ben bunu modumda nasıl kullanabilirim?" diye sorabilirsiniz. Ve böyle düşünmek hakkınızdır. Teknik olarak, Inworld'un ana hedefi, tüm kullanıcıların Inworld'u hiç görmeksizin kullanabileceği tek bir geliştirici aboneliği gibi görünüyor. Ancak tahmin edebileceğiniz gibi, bu durum ekonomik olarak hiçbir mod yaratıcı için uygulanabilir değil, aksi takdirde modları bir abonelik tabanlı DLC'ye dönüştürürsünüz. Inworld'un fiyatlandırma detaylarına bu bölümde girmeyeceğim çünkü her zaman müşteri geri bildirimlerini topluyorlar ve fiyatlandırmalarını buna göre güncelliyorlar. Bu yüzden, bunu okuduğunuz sırada, Inworld AI'nin fiyatlandırması mevcut sistemden bile daha uygun olabilir. Ancak genel olarak, Inworld'un fiyatlandırma politikası, kullanıcıların bir hesap oluşturup tamamen ücretsiz olarak uzun bir süre kullanmalarını sağlayacak kadar kullanıcı dostudur.

+

Aşağıda artıları ve eksileri sıralayacağım. Ancak bu, önceki 301 bölümünün bir tekrarı olmayacak; burada yalnızca DevEx'e odaklanacağım.

+

Artılar

+

Hepsini Yönetecek Bir Hizmet yaklaşımı: Gerekli tüm araçları özellik setinde sunar, bu yüzden birer birer farklı hizmetlere kaydolmanıza gerek yok.

+

Yabancılaştırmayan UX/UI: Ana olarak Geliştiriciler/Oyun Geliştiricilere odaklansalar da, UI/UX'leri düzenli kullanıcıları sistemle oynamaya ve ona aşina olmaya teşvik eder. Bu, bir mod geliştirici olarak size doğrudan bir fayda sağlamaz, ancak dolaylı olarak çok yardımcı olur çünkü birçok "bunu ve bunu nasıl yapabilirim" sorusunu ortadan kaldırır.

+

Fiyatlandırma: Tamamen ücretsiz olmayabilir, ama kesinlikle oyunculara hizmet vermek ve geliştirmek için yeterince ücretsiz. Oyuncuların, mod geliştiricinin herhangi bir değişiklik yapmasına gerek kalmadan daha fazla etkileşim süresi için hesaplarını yükseltmeleri de çok kolay.

+

Katılım: Herhangi bir sorunuz olması durumunda, Discord kanallarında geliştiriciler gerçekten sizinle etkileşim kuruyor. Bu, LLM modlama konusunda yeni olanlar için ekstra iyi. LLM talep kılavuzlarından teknik konulara kadar insanlara yardım ediyorlar.

+

Eksiler

+

Protokol ve SDK'lar: Seçilen protokol (gRPC), teknik yığınları açısından zaten biraz sınırlı olan modlar için iyi bir uyum sağlamıyor. Ayrıca, SDK'lar öncelikle Unreal veya Unity gibi popüler oyun motorlarına odaklanıyor, ancak modların %95'i, oyun bu motorlarla yapılmış olsa bile, bu motorlarla doğrudan etkileşimde bulunmuyor.

+

Eksik API'lar: Ne yazık ki, Inworld bazı çok önemli API'ları eksik, örneğin API veya SDK çağrısı ile karakterleri/beyinleri oluşturma, güncelleme veya silme. Ancak, Inworld'un bunun farkında olduğunu ve bunun üzerinde çalışmaya başladığını biliyorum, bu yüzden bunu okuduğunuzda, bu muhtemelen artık bir sorun olmayacak.

+


+
+
+ inworld +
+ +

Inworld ile Modlamaya Başlama

+

Fiyatlandırma şeması ve giriş sistemi sayesinde, Inworld'u test etmek çok kolay. Sadece inworld.ai adresine gidin ve "Başla"ya tıklayarak hesabınızı oluşturun. Oradan, Inworld size belirli karakterleri demo karakterler olarak içeren bir çalışma alanı sağlar.

+

Öncelikle onlarla etkileşime geçmenizi ve tüm deneyimi anlamanızı şiddetle öneririm. Yeterince etkileşimde bulunduğunuzu hissettiğinizde, açıklamalarını, hedeflerini ve daha fazlasını kontrol edin. Diğer modellerin aksine, Inworld, günler boyunca özenle hazırlanmış büyük bir tanımlayıcı paragraf beklemiyor. Bunun yerine, endişeleri ve noktaları farklı bölümlere ayırıyorlar, böylece bunları daha düzenli bir şekilde doldurabilirsiniz. Ayrıca, Inworld, karakter oluşturma UI'si ile temel ve ileri kavramları ayırt ederek mükemmel bir iş çıkarır. Örneğin, çekirdek açıklama, tüm karakterlerin sahip olması gereken temel bir özelliktir, oysa kişilik ve duygular, bir temel karakterin ihtiyaç duyduğundan daha ileri özelliklerdir.

+

Her bölüm hakkında kısaca bilgi vermek için:

+
    +
  • +

    Çekirdek Açıklama: Bu, karakterinizin temel yapısını, tarihini, mevcut durumunu ve kişilik özelliklerini içerir. Bu açıklama çok önemlidir ve LLM tarafından çok ciddiye alınır. Bu bölümde geçici bilgi eklememek akıllıca olacaktır çünkü bir şekilde, bu açıklama karakterin ruhuna işlenmiştir.

    +
  • +
  • +

    Kusurlar: Bunlar, karakterin zayıflıklarını ve savunmasızlıklarını, motivasyonlarıyla birlikte temsil eder. Oluşturduğunuz karakteri derinleştirmek için kullanılabilirler.

    +
  • +
  • +

    Diyalog Stili: Her karakterin diyalogunu elle oluşturmak istemiyorsanız, Inworld size bir dizi çok kullanışlı seçenek sunar. Ancak ciddiye almak istiyorsanız, özel bir diyalog stili eklemelisiniz. Gözlemlerime dayanarak, bu genellikle en iyi yanıtları verir.

    +
  • +
  • +

    Ses Parametreleri: Bu, muhtemelen en anlaşılır bölümdür. Bir şeye dikkat çekmek gerekirse, bu, kutudan çıkan Elevenlabs entegrasyonu ile birlikte gelir. Bu, isterseniz (veya oyuncu istiyorsa), onların sahip olduğu herhangi bir Elevenlabs sesini klonlayabilir veya kullanabilir ve burada entegre edebilirsiniz. Ses verisi geçirildiğinde, bu durumda Elevenlabs kullanılacaktır.

    +
  • +
+

İleri özelliklere geçiş yapalım: Kişilik, Bilgi, Hedefler, Sahneler ve İlişkiler.

+
    +
  • +

    Kişilik: İsminden de anlaşılacağı gibi, bu bölüm karakterlerimizin kişiliği ile ilgilidir. Burada, karakteri daha olumsuz, neşeli, korkmuş vb. seslendirebilirsiniz. Inworld'deki duygusal motor, Kişilik tarafından kontrol edilir, karakterin davranış biçimini, duygularını sıfatlar ve kaydırıcılar kullanarak tanımlayarak şekillendirir.

    +
  • +
  • +

    Bilgi: Kullanıcı sorularına verilen yanıtlar, Gerçekler ve Bilgi tarafından sağlanır. Karaktere özgü bilgiler Kişisel Bilgi altında düşerken, Ortak Bilgi birden çok karakter arasında paylaşılır, dünya yaratmayı kolaylaştırır. Karakterleriniz gerçek dünyada temelli değilse, bunlar önemlidir. Hala AI'yı bir sürü ortak bilgi ekleyerek tamamen "izole" edemezsiniz, ancak ne kadar çok bilgi eklerseniz, o kadar iyi uyarlanmış yanıtlar alırsınız.

    +
  • +
  • +

    Hedefler: Bu özellik, belirli eylemlerin önceden tanımlanmış kelimeler veya niyetler kullanılarak tetiklenmesini sağlar, son derece güçlüdür. Daha fazla ayrıntı için belgelerini incelemenizi şiddetle tavsiye ederim.

    +
  • +
  • +

    Sahneler: Potansiyelini tam olarak kavrayamadım ve çok fazla kullanmadım. Temelde, karakterlere mevcut konumlarına dair bir his sağlar. Modifikasyonlarım çoğunlukla dinamik ayarlara odaklandığı için, Sahneler benim için çok faydalı olmadı. Ancak statik sahneler üzerinde yoğunlaşıyorsanız, derinlemesine incelemeye değer.

    +
  • +
  • +

    İlişkiler: İlişki, NPC'ler ve oyuncular arasında farklı oyun oturumları boyunca ilişkilerin geliştirilmesine izin vermek üzere ayarlanmış yeni bir özellik setidir. Temel olarak, oyuncu ve karakter arasında "ilerleyici" ilişki anlamına gelir.

    +
  • +
+

Daha fazla detay için, belgelerini kontrol edebilirsiniz.

+

Mimari

+
+

Not

+

Eğer oyun modlamanız uygun NDK entegrasyonunu destekliyorsa ve NDK geliştirmede deneyimliyseniz, lütfen Inworld NDK geliştirme kitini kontrol edin. Burada açıklanan mimariden 10 kat daha verimli olabilir. Bakınız inworld-ai/inworld-ndk.

+
+

Genellikle oyunlar, ne yaptığınızı bilmiyorsanız ve oyunun çekirdeğini tamamen modlamazsanız, ortamlarında farklı DLL'leri çalıştırmaya izin vermez. Bu yüzden genellikle yan arabayı kullanmak daha iyidir.

+

Daha önce modlarımla oynadıysanız, oyunu başlatmadan önce her zaman arka planda "terminal" görmeniz gerektiğini fark etmiş olabilirsiniz. Bunun ana nedeni, bu "terminal"in temelde, mevcut Inworld SDK'yı kullanan paketlenmiş bir Node.js soket sunucusu olmasıdır. Elbette, uygulamanızın ve gereksinimlerinizin bağlı olduğu duruma göre, bu gerekliliği tamamen kaldırabilir ve modu oyunun kendisine doğrudan entegre edebilirsiniz.

+

Inworld Entegrasyon Diyagramı

+

Yukarıdaki resmin mimariyi net bir şekilde açıkladığını düşünüyorum. Ancak biraz daha bağlam vermek için: +Oyun, eylemlerini gerçekleştirmek için "Relayer Uygulaması"nı bir proxy olarak kullanır; Inworld AI sistemi ile hiçbir zaman doğrudan etkileşime girmez. Diyagramda, Relayer Uygulaması'nın bir soket katmanını kullandığı gösterilmiştir; ancak, modunuzdaki kısıtlamalara bağlı olarak, bu aynı zamanda basit bir REST API de olabilir. +Yan arabayınızın Inworld SDK'yı entegre edebilmesi sürece, gerisi tamamen size bağlıdır. Teknik olarak, uygulama ile oyun arasında bağlantı kurmak için adlandırılmış boruları kullanabilirsiniz. Ya da hatta bazı özel formatları veya geçici çözümleri kullanabilirsiniz, örneğin bir dosyaya yazabilir ve uygulama tarafında bunu okuyabilirsiniz. Ancak, bu son çare olmalıdır çünkü I/O işlemleri korkunç derecede yavaştır ve iletişimde istenmeyen gecikmelere neden olabilir.

+

Yan araba yaklaşımının bir başka iyi yanı, teknik olarak ayrı bir süreç/uygulama gibi çalıştığı için, moddan bağımsız olarak çalışabilir ve daha fazla şey yapabilir. Örneğin, oyun size seslerin çalınmasına izin vermiyorsa, bunu yan araba ile ele alabilirsiniz çünkü muhtemelen bu tür işlemleri gerçekleştirme konusunda daha iyi bir şansı olacaktır. Ayrıca, mod kullanımı için bazı verileri saklamak, buna başvurmak isteyebilir, oyuncu ve sistem arasındaki iletişimi saklamak vb. için kendi küçük ölçekli veritabanınızı da oluşturabilirsiniz. Gerisi gerçekten hayal gücünüze bağlıdır - çılgına dönün! :)

+

Inworld SDK ile bir yan araba nasıl uygulanır konusunda bir ipucu ihtiyacınız varsa, kontrol etmenizi öneririm:

+

Resmi Inworld NodeJS SDK Örnekleri hem JS hem de TS için. Eğer Inworld konusunda hiç aşina değilseniz, bu sizin ana giriş noktanız olmalı. Link

+

Bannerlord Mod ana Bannerlord mod için C# kullanırken, mevcut Inworld NodeJS SDK ve bir websocket katmanı kullanan bir JS yan arabası kullanır. Link

+

Skyrim Mod ana Skyrim mod için C++, oyunla ilgili modlamalar için Papyrus Scripting, seslerin çalınması için C# Audio system (çünkü bunu Skyrim veya Node.js tarafında yapmak istemedim) + mevcut Inworld NodeJS SDK ve bir websocket katmanı kullanan TypeScript versiyonu bir yan arabası kullanır. Link

+

Inworld Discord kanalı, diğer geliştiricilerle iletişim kurmanın harika bir yolunu sağlar. Sorularınızı sorabilir ve topluluk bilgisinden bazı bilgiler toplayabilirsiniz. Tekerleği yeniden icat etmenize gerek yok. Link

+

Notlar

+

Inworld AI, harika bir hizmet ve şimdiye kadar onunla çalışırken çok eğlendim. Önceki 301 bölümünde ve burada belirttiğimiz gibi, artıları ve eksileri vardır, ancak artıların eksileri büyük ölçüde ağır bastığını rahatlıkla söyleyebilirim. Dahası, Inworld'a her zaman iyileştirmeler önerebilirsiniz. Onları takdir ettiğim harika yönlerden biri bu—ne kadar erişilebilir oldukları. Sistemi geliştirmek için bir öneriniz olduğunda, basitçe öneride bulunabilir ve onlar gerçekten dinler! Tabii ki, herhangi bir şirket gibi, kendi arka plan öğelerine sahipler ve bunları nasıl uygulayacaklarını değerlendirmeleri gerekiyor. Ancak pragmatik bir bakış açısıyla, ekledikleri her değerli özellik, onlara uzun vadede fayda sağlayacaktır. Bu nedenle, iyi önerileri geri çevirmek için pratikte hiçbir nedenleri yok. Bu yüzden, eğer yeterince iyi olduğuna karar verilirse, bunun üzerinde çalışan biri olacağından emin olabilirsiniz.

+

Bu tüm sayfa, LLM'ler kullanarak kendi modunuzu nasıl oluşturabileceğinize dairdir. Ancak, aynı fikirleri ve mimariyi kendi oyunlarınıza da uygulayabilirsiniz. Tabii ki, sistemler teknik olarak bu belgede ayrıntılı olarak anlatılandan farklı olabilir, özellikle çoğu modlamanın genellikle meydana geldiği özel oyun motorları, özgür olanlardan daha esneklik sunar.

+

Bu kadar, arkadaşlar! Umarım bu belge, bazılarınıza yardımcı olmuştur. Bahsetmediğim, muhtemelen çekici bulabileceğiniz birçok diğer hizmet ve model olduğunun farkındayım. Ancak, bu tüm yazı, bilgim ve deneyimlerime dayanmaktadır. Katkıda bulunmak veya herhangi bir öneriniz varsa, bir çekme isteği oluşturarak bunu yapmaktan çekinmeyin. Bu makaleyi değerli bulduysanız ve başka bir dilden iseniz, lütfen bunu dilinize çevirmeme yardımcı olun.

+ + + + + + +
+
+ + + + +
+ + + +
+ +
+ + +
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/tr/index.html b/tr/index.html new file mode 100644 index 0000000..2fe3cbf --- /dev/null +++ b/tr/index.html @@ -0,0 +1,520 @@ + + + + + + + + + + + + + + + + + + + + + + Giriş - LLM Modding Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + +
+
+
+ + + + +
+
+ + + + +

Giriş

+
+ Kapak Resmi +
+ +
+

Önemli

+

Kesinlikle kendimi bir LLM uzmanı olarak iddia etmiyorum. Sadece bu iki konuyu birleştirmekten zevk alan bir mod yapımcısıyım. Eğer daha fazla bilginiz varsa, bu repository'e bir Pull Request yapmaktan çekinmeyin.

+
+

Bu Rehber Hakkında

+

Bu Rehberi Neden Oluşturuyorum

+

Bu rehberi, mod yapımcılarının büyük dil modelleri (LLMs) kullanarak en sevdikleri oyunları modlamayı öğrenmelerine yardımcı olmak için oluşturuyorum. LLM'ler, metin oluşturmak, dilleri çevirmek ve kapsamlı ve bilgilendirici bir şekilde soruları yanıtlamak için kullanılan bir tür yapay zekadır. Mod yapımcılarının yeni ve yenilikçi oyun deneyimleri oluşturmasına olanak sağlayarak oyun modlama dünyasını devrim niteliğinde değiştirme potansiyeline sahipler.

+

Bu rehber genel olarak LLM'ler hakkında olmayacak. Bunun yerine, merkezinde LLM'leri kullanan kendi modlarınızı yazmanın temellerini sağlayacak. Ben bir makine öğrenme bilimcisi değilim, bu konudaki bilgim ancak bilimsel seviyededir, bu yüzden modlama pratiğine odaklanacağım, yani projeniz için doğru LLM'yi nasıl seçeceğinizi, onu modunuza nasıl entegre edeceğinizi ve karşılaşabileceğiniz yaygın sorunları nasıl çözeceğinizi anlatacağım.

+

LLM'lerin, LLM'leri tüm beceri seviyelerindeki mod yapımcılarına ulaşılabilir kılarak modlama sahnesini zenginleştirme potansiyeline sahip olduğuna inanıyorum, daha fazla insanın kendi modlarını oluşturmasını ve paylaşmasını teşvik etmeyi umuyorum. Bu, daha çeşitli ve yenilikçi bir modlama sahnesi yaratacak ve sonuçta herkes için daha iyi bir oyun deneyimi oluşturacak.

+

İşte LLM'lerin oyunları modlamak için nasıl kullanılabileceğine dair bazı spesifik örnekler:

+
    +
  • NPC'ler için yeni diyaloglar oluşturun
  • +
  • Yeni görevler ve hikayeler oluşturun
  • +
  • Düşmanlar ve diğer karakterler için yeni AI davranışları geliştirin
  • +
  • Haritalar ve zindanlar gibi prosedürel olarak oluşturulan içerikler yaratın
  • +
  • Oyunları yeni dillere çevirin
  • +
+

Ancak, bu rehberde çoğunlukla diyalogları oluşturmaya odaklanacağız. Bununla birlikte, LLM'lerin önünde büyük bir gelecek var ve yukarıda belirtilen örnekler çok iyi bir şekilde uygulanabilir.

+

LLM'lerin oyun modlamasını devrimleştirebileceğine inanıyorum. Mod yapımcılarının oyuncular için modların yeniden oynanabilirliğini artıran benzersiz deneyimler sunan yeni ve yenilikçi oyun deneyimleri oluşturmasını mümkün kılarak.

+

LLM'leri kullanarak en sevdikleri oyunlar için yeni ve heyecan verici modlar oluşturmakla ilgilenen mod yapımcıları için bu rehberin değerli bir kaynak olacağını umuyorum.

+

Yapı

+

Bunu 3 bölüme ayıracağım.

+
    +
  • LLM Modlaması 101 : Genel bir giriş ve gereken şeyleri verecek
  • +
  • LLM Modlaması 201 : Farklı LLM türlerini açıklamaya odaklanacak ve artıları ve eksilerini ele alacak.
  • +
  • LLM Modlaması 301 : Mimarlık türlerini açıklayacak, bilinen LLM türleri hakkında detaylı bilgi verecek ve bunların hepsinin arkasındaki bazı mantığı açıklayacak.
  • +
  • LLM Modlaması 401 : Çoğunlukla Inworld kullanmayı ele alacak ve artıları-eksileri ve nasıl yapılacağı hakkında tartışacak.
  • +
+ + + + + + +
+
+ + + + +
+ + + +
+ +
+ + +
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file