Jump to content

OpenAI Integration 1.0.1

   (0 reviews)

1 Screenshot

  • 2.9k
  • 21
  • 68.12 kB
 Share

About OpenAI Integration

For developers to integrate OpenAI endpoints into their plugins.

Features

  • API Key Verification: Automatically verifies the provided OpenAI API key.
  • Chat Commands: Provides in-game commands for administrators to interact with the OpenAI API.
  • Model Listing: Fetches and lists available models from OpenAI.
  • Chat Completions: Handles chat-based interactions with OpenAI's language models.

 

Configuration

{
  "DefaultAssistantModel": {
    "max_completion_tokens": 150,
    "max_prompt_tokens": 150,
    "Model": "gpt-4o"
  },
  "DefaultCompletionsModel": {
    "MaxTokens": 150,
    "Model": "gpt-4o"
  },
  "OpenAI_Api_Key": {
    "OpenAI API Key": "your-api-key-here"
  }
}

 

Commands

/openaitest

Tests the connection to the OpenAI API using a predefined message. Only available to administrators.

/listmodels

Fetches and lists all available models from the OpenAI API. Only available to administrators.

 

Public Methods

There are two main API interactions through the completions and the assistant API. 

 

Completions_SimpleChat

Example of Completions_SimpleChat - Creates a simple chat interaction with OpenAI.

        private void AskGptCommand(BasePlayer player, string command, string[] args)
        {
            if (!permission.UserHasPermission(player.UserIDString, "RustGPT.chat"))
            {
                player.ChatMessage("<color=#ff0000>You do not have permission to use this command.</color>");
                return;
            }

            if (args.Length == 0)
            {
                player.ChatMessage("Usage: /askgpt <your question>");
                return;
            }

            if (!HasCooldownElapsed(player))
            {
                return;
            }

            var userMessage = string.Join(" ", args);

            var messages = new List<object>
            {
                new { role = "system", content = _config.DefaultContent },
                new { role = "user", content = userMessage }
            };

            player.ChatMessage("Sending your message to OpenAI...");

            OpenAI?.Call("Completions_SimpleChat", messages, (System.Action<JObject>)((response) =>
            {
                if (response != null && response["choices"] != null && response["choices"].HasValues)
                {
                    string GPT_Chat_Reply = response["choices"][0]["message"]["content"].ToString().Trim();
                    if (GPT_Chat_Reply.Length > 1200)
                    {
                        CreateNotesForResponse(player, GPT_Chat_Reply);
                    }
                    else
                    {
                        SendChatMessageInChunks(player, $"<color={_config.ReplyPrefixColor}>{_config.ReplyPrefix}</color> {GPT_Chat_Reply}", 250);
                    }
                }
                else
                {
                    player.ChatMessage("<color=#ff0000>Failed to get a valid response from OpenAI. Please try again later.</color>");
                }
            }));
        }

 

Assistant_CreateAssistant

[HookMethod("Assistant_CreateAssistant")] public void Assistant_CreateAssistant(string name = null, string description = null, string instructions = null, List<object> tools = null, object toolResources = null, Dictionary<string, string> metadata = null, double? temperature = null, double? topP = null, object responseFormat = null, Action<JObject> callback = null)

Example:

var openAIPlugin = (OpenAI)plugins.Find("OpenAI"); 
openAIPlugin.Assistant_CreateAssistant("MyAssistant", "An assistant for my game", "You are a helpful assistant.", null, null, null, null, null, null, response => 
                                       { if (response != null) 
                                       	{ Puts("Assistant created successfully: " + response.ToString()); } 
                                        else 
                                        { Puts("Failed to create assistant."); } 
                                       });

 

Assistant_CreateVectorStore

Example use of Assistant_CreateVectorStore to save chat interactions in the OpenAI platform using the Assistants API.

var openAIPlugin = (OpenAI)plugins.Find("OpenAI");

List<string> fileIds = new List<string>(); // Initially, no file IDs
string name = "OpenAIChatHistory";
object expiresAfter = DateTime.UtcNow.AddDays(30); // Expires after 30 days
object chunkingStrategy = null; // Define your chunking strategy if any
Dictionary<string, string> metadata = new Dictionary<string, string>
{
    { "game", "Rust" },
    { "description", "Vector store for storing chat interactions with OpenAI" }
};

openAIPlugin.Assistant_CreateVectorStore(fileIds, name, expiresAfter, chunkingStrategy, metadata, response =>
{
    if (response != null)
    {
        Puts("Vector store created successfully: " + response.ToString());
    }
    else
    {
        Puts("Failed to create vector store.");
    }
});

 

Pubic Methods

  • FetchModels
  • Completions_CreateChat
  • Completions_SimpleChat
  • Assistant_CreateAssistant
  • CreateThread
  • RetrieveThread
  • ModifyThread
  • DeleteThread
  • Assistant_CreateMessage
  • Assistant_ListMessages
  • Assistant_RetrieveMessage
  • Assistant_ModifyMessage
  • Assistant_DeleteMessage
  • Assistant_CreateRun
  • Assistant_CreateThreadAndRun
  • Assistant_ListRuns
  • Assistant_RetrieveRun
  • Assistant_ModifyRun
  • Assistant_CancelRun
  • Assistant_ListRunSteps
  • Assistant_RetrieveRunStep
  • Assistant_CreateVectorStore
  • Assistant_ListVectorStores
  • Assistant_RetrieveVectorStore
  • Assistant_ModifyVectorStore
  • Assistant_DeleteVectorStore
  • Assistant_SubmitToolOutput

 

All of these interactions are built using the OpenAI platform as a scaffold. Using the OpenAI documentation you can see response examples for all of the available methods.
https://platform.openai.com/docs/api-reference/introduction

 

 


GOO_'s Collection

User Feedback

1.3m

Downloads

Total number of downloads.

6.4k

Customers

Total customers served.

94.7k

Files Sold

Total number of files sold.

1.9m

Payments Processed

Total payments processed.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.