update
This commit is contained in:
95
src/interface.jl
Normal file
95
src/interface.jl
Normal file
@@ -0,0 +1,95 @@
|
||||
module interface
|
||||
|
||||
# export
|
||||
|
||||
using JSON3, DataStructures, Dates, UUIDs, HTTP, Random
|
||||
using GeneralUtils
|
||||
using ..type, ..util, ..llmfunction
|
||||
|
||||
# ------------------------------------------------------------------------------------------------ #
|
||||
# pythoncall setting #
|
||||
# ------------------------------------------------------------------------------------------------ #
|
||||
# Ref: https://github.com/JuliaPy/PythonCall.jl/issues/252
|
||||
# by setting the following variables, PythonCall.jl will use:
|
||||
# 1. system's python and packages installed by system (via apt install)
|
||||
# or 2. conda python and packages installed by conda
|
||||
# if these setting are not set (comment out), PythonCall will use its own python and packages that
|
||||
# installed by CondaPkg.jl (from env_preparation.jl)
|
||||
# ENV["JULIA_CONDAPKG_BACKEND"] = "Null" # set condapkg backend = none
|
||||
# systemPython = split(read(`which python`, String), "\n")[1] # system's python path
|
||||
# ENV["JULIA_PYTHONCALL_EXE"] = systemPython # find python location with $> which python ex. raw"/root/conda/bin/python"
|
||||
|
||||
# using PythonCall
|
||||
# const py_agents = PythonCall.pynew()
|
||||
# const py_llms = PythonCall.pynew()
|
||||
# function __init__()
|
||||
# # PythonCall.pycopy!(py_cv2, pyimport("cv2"))
|
||||
|
||||
# # equivalent to from urllib.request import urlopen in python
|
||||
# PythonCall.pycopy!(py_agents, pyimport("langchain.agents"))
|
||||
# PythonCall.pycopy!(py_llms, pyimport("langchain.llms"))
|
||||
# end
|
||||
|
||||
# ---------------------------------------------- 100 --------------------------------------------- #
|
||||
|
||||
|
||||
|
||||
""" Add new message to agent.
|
||||
|
||||
Arguments\n
|
||||
-----
|
||||
a::agent
|
||||
an agent
|
||||
role::String
|
||||
message sender role i.e. system, user or assistant
|
||||
text::String
|
||||
message text
|
||||
|
||||
Return\n
|
||||
-----
|
||||
inferenced text
|
||||
|
||||
Example\n
|
||||
-----
|
||||
```jldoctest
|
||||
julia> using YiemAgent
|
||||
```
|
||||
|
||||
Signature\n
|
||||
-----
|
||||
""" #WORKING
|
||||
function addNewMessage(a::T1, role::String, text::T2) where {T1<:agent, T2<:AbstractString}
|
||||
if role ∉ a.availableRole # guard against typo
|
||||
error("role is not in agent.availableRole $(@__LINE__)")
|
||||
end
|
||||
|
||||
# check whether user messages exceed limit
|
||||
userMsg = 0
|
||||
for i in a.messages
|
||||
if i[:role] == "user"
|
||||
userMsg += 1
|
||||
end
|
||||
end
|
||||
messageleft = 0
|
||||
|
||||
if userMsg > a.maxUserMsg # delete all conversation
|
||||
clearMessage(a)
|
||||
messageleft = a.maxUserMsg
|
||||
else
|
||||
userMsg += 1
|
||||
d = Dict(:role=> role, :text=> text, :timestamp=> Dates.now())
|
||||
push!(a.messages, d)
|
||||
messageleft = a.maxUserMsg - userMsg
|
||||
end
|
||||
|
||||
return messageleft
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
end # module interface
|
||||
Reference in New Issue
Block a user