To be self aware an AI must be aware of its surroundings. You show me your AI project and how it works then you let me know what you think of this module. Because I think it’s funny how you know nothing yet decide to tout your opinion this is literally the type of string constructing algorithm to describe to a large language model what it sees. I would like to reiterate I do not care for your negative opinions, you are likely clueless and do not really know what you are talking about.
My responses coming off condescending because the only ones who decided to say anything where the negative people and they are not even making good arguments. Research the topic and provide informed input. This is how you would send surroundings information to an AI model. You can ask it to find a point of interest from the surroundings and make decisions based on that. My chatbot has the abilities to perform action commands from strings. So I could interpret the output to make the AI chatbot self aware by giving it the ability to make autonomous decisions based on its environment.
For example perhaps the AI decides to pick up an apple on the ground because it has some arbitrary hunger or thirst stat. The AIs decisions could also be influenced by survival and input from its surroundings. This is not a common implementation of a large language model but it would be very interesting to give the AI human goals. Like what literal universities have published on Automonous agents.This script is a strong concept for other developers as it provides a structured way to construct a description of the chatbots surroundings.
You could use raycasting and project a ray from only the front of the AI if you wish to only get what it would see in front of it.
For example if you were making a AI character who was a reactive NPC that made dialogue. You could send a message to the model describing the surroundings. Then the model can respond to that input of the world with their character like in that youtube video but within the confines of ROBLOX studio.
self-a·ware·ness
[ˌselfəˈwernəs]
NOUN
- conscious knowledge of one’s own character, feelings, motives, and desires:
“the process can be painful but it leads to greater self-awareness”
Also, I updated the code I shared to not include the NPC description algorithm because it is too lengthy and tailored to my custom NPC combat algorithm
But I will post it here just because.
function aware.DescribeNPC(Char)
local MagicID=Char:FindFirstChild("MagicID")
if MagicID~=nil then
local fly=""
local Aggression=""
local AttackVector=""
local Barrier=""
local Buffs=""
local BaseHealth=""
local BaseMagicDMG=""
local BaseRangeDMG=""
local BaseMeleeDMG=""
local CanBeFrozen=""
local ChangeStyles=""
local Cooldown=""
local Cost=""
local CostMax=""
local Cure=""
local Description=""
local Dodge=""
local Element=""
local Element2=""
local Element3=""
local Hide=""
local Level=""
local MainStyle=""
local Multiply=""
local Paralyze=""
local Poison=""
local Power=""
local Prayer=""
local ProtectFromStyle=""
local Recoil=""
local Range=""
local Parasite=""
local Species=""
local Teleport=""
local Transform=""
local Weakness=""
local rating=0
--construct a long combined string of the above local strings.
if MagicID:GetAttribute("Aggression")==1 then
Aggression="aggressive, "
rating=rating+1
end
if MagicID:GetAttribute("Fly")==true then
fly="can Fly, "
rating=rating+1
end
if MagicID:GetAttribute("Barrier")==true then
Barrier="uses Barrier, "
rating=rating+1
end
if MagicID:GetAttribute("Buffs")==true then
Buffs="uses Buffs, "
rating=rating+1
end
if MagicID:GetAttribute("Multiply")==true then
Buffs="uses Multiply, "
rating=rating+1
end
if MagicID:GetAttribute("ChangeStyle")==true then
ChangeStyles="melee and magic user, "
rating=rating+1
BaseMagicDMG="base Magic damage is"..tostring(MagicID:GetAttribute("BaseMagicDMG"))..", "
BaseMagicDMG="base Melee damage is"..tostring(MagicID:GetAttribute("BaseMeleeDMG"))..", "
if MagicID:GetAttribute("AttackVector3")~=nil then
AttackVector="melee range is"..tostring(MagicID:GetAttribute("AttackVector3"))..", "
end
elseif MagicID:GetAttribute("ChangeStyle")==false then
if MagicID:GetAttribute("MainStyles")~=nil then
if MagicID:GetAttribute("MainStyles")==1 then
MainStyle="uses Melee only, "
if MagicID:GetAttribute("AttackVector3")~=nil then
AttackVector="melee range:"..tostring(MagicID:GetAttribute("AttackVector3"))..", "
end
elseif MagicID:GetAttribute("MainStyles")==2 then
MainStyle="uses Magic only, "
elseif MagicID:GetAttribute("MainStyles")==3 then
MainStyle="uses Range only, "
end
end
end
if MagicID:GetAttribute("BaseHealth")~=nil then
local hpr=Char.Humanoid.MaxHealth/100
rating=rating+hpr
BaseHealth="base health "..tostring(MagicID:GetAttribute("BaseHealth"))..", "
end
--write code to complete above context
if MagicID:GetAttribute("CanBeFrozen")==false then
CanBeFrozen="cannot be frozen, "
rating=rating+1
end
if MagicID:GetAttribute("Cooldown")~=nil then
Cooldown="it's cooldown is "..tostring(MagicID:GetAttribute("Cooldown"))..", "
rating=rating+(5-MagicID:GetAttribute("Cooldown"))
end
if MagicID:GetAttribute("Cost")~=nil then
Cost="it's action cost is "..tostring(MagicID:GetAttribute("Cost"))..", "
rating=rating+1
end
if MagicID:GetAttribute("CostMax")~=nil then
CostMax="It's max power is"..tostring(MagicID:GetAttribute("CostMax"))..", "
end
if MagicID:GetAttribute("Cure")==true then
Cure="can Heal, "
rating=rating+1
end
if MagicID:GetAttribute("Description")~=nil then
Description=MagicID:GetAttribute("Description")..""
end
if MagicID:GetAttribute("Dodge")==true then
Dodge="can Dodge, "
rating=rating+1
end
if MagicID:GetAttribute("Teleport")==true then
Teleport="can Teleport, "
rating=rating+1
end
if MagicID:GetAttribute("Transform")==true then
Transform="can Transform, "
rating=rating+1
end
if MagicID:GetAttribute("Element")~=nil and MagicID:GetAttribute("Element")~="" then
Element="uses "..MagicID:GetAttribute("Element")
rating=rating+1
if MagicID:GetAttribute("Element2")~="" and MagicID:GetAttribute("Element2")~=nil then
Element2=","..MagicID:GetAttribute("Element2")
rating=rating+1
end
if MagicID:GetAttribute("Element3")~="" and MagicID:GetAttribute("Element2")~=nil then
Element3="and "..MagicID:GetAttribute("Element3")
rating=rating+1
end
end
if MagicID:GetAttribute("Parasite")==true then
Parasite=", it's parasitic"
rating=rating+1
end
if MagicID:GetAttribute("Poison")==true then
Poison=", it's poisonous"
rating=rating+1
end
if MagicID:GetAttribute("Prayer")==true then
Prayer="uses Prayers"
rating=rating+1
elseif MagicID:GetAttribute("ProtectFromStyle")==1 then
rating=rating+1
ProtectFromStyle=", strong against Melee"
elseif MagicID:GetAttribute("ProtectFromStyle")==2 then
rating=rating+1
ProtectFromStyle=", strong against Magic"
elseif MagicID:GetAttribute("ProtectFromStyle")==3 then
rating=rating+1
ProtectFromStyle=", strong against Range"
end
--Power="Power Multiplier:" MagicID:GetAttribute("Power")
--Range=""
if MagicID:GetAttribute("Recoil")==true then
rating=rating+1
Recoil="hurts to touch, "
end
rating=rating+tonumber(Level)
--write rest of code for above context
return Description..Element..Element2..
Element3.." magic. It's "..Level.." "..ChangeStyles..MainStyle..Cooldown..fly..Aggression..Barrier..Buffs..BaseHealth..
BaseMagicDMG..BaseRangeDMG..BaseMeleeDMG..AttackVector..CanBeFrozen..
Cost..CostMax..Cure..Dodge..
Hide..Multiply..Paralyze..Poison..Power..
Prayer..ProtectFromStyle..".",aware.judgepower(rating,25)
else return "",nil
end
end