update
This commit is contained in:
+38
-47
@@ -5,7 +5,7 @@ export virtualWineUserChatbox, jsoncorrection, search_wine_database!, # recomme
|
||||
extractWineAttributes_2, paraphrase, SQLexecution
|
||||
|
||||
using HTTP, JSON, URIs, Random, PrettyPrinting, UUIDs, Dates, DataFrames, DataStructures,
|
||||
Base64, Serde, LibPQ
|
||||
Base64, Serde, LibPQ, NATS
|
||||
using GeneralUtils, SQLLLM
|
||||
using ..type, ..util
|
||||
|
||||
@@ -320,13 +320,27 @@ function search_wine_database!(a::T, thoughtdict::AbstractDict; useSQLLLM::Bool=
|
||||
@show vector_search
|
||||
@show vector_search_str
|
||||
|
||||
|
||||
config = a.context.agentconfig
|
||||
host_url, _port = split(config["externalservice"]["sommpanion_db"]["url"], ':')
|
||||
port = parse(Int, _port)
|
||||
dbname = "winedb"
|
||||
user = config["externalservice"]["sommpanion_db"]["user"]
|
||||
password = config["externalservice"]["sommpanion_db"]["password"]
|
||||
pg_conn_str = "host=$host_url port=$port dbname=$dbname user=$user password=$password"
|
||||
|
||||
#WORKING
|
||||
GeneralUtils.find_text_vector_similarity(vector_search_str, "wine", "tasting_notes_embedding",
|
||||
GeneralUtils.execute)
|
||||
|
||||
|
||||
df = GeneralUtils.find_text_vector_similarity(
|
||||
vector_search_str,
|
||||
"wine",
|
||||
"tasting_notes_embedding",
|
||||
GeneralUtils.execute_postgres_sql(pg_conn_str, sql), #BUG input pair (F, arg)
|
||||
a.context.getTextEmbedding([vector_search_str]) #BUG input pair (F, arg)
|
||||
)
|
||||
|
||||
|
||||
@show df
|
||||
error(888888)
|
||||
|
||||
|
||||
items = nothing
|
||||
@@ -1500,13 +1514,6 @@ end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function classify_column(pg_conn_str::String, table_name::String, column_name::String;
|
||||
sample_size::Integer=1000)
|
||||
conn = LibPQ.Connection(pg_conn_str)
|
||||
@@ -1608,44 +1615,28 @@ end
|
||||
|
||||
|
||||
|
||||
function harvest_entity_catalog(pg_conn_str::String, table::String, column::String)
|
||||
conn = LibPQ.Connection(pg_conn_str)
|
||||
return harvest_entity_catalog(conn, table, column)
|
||||
end
|
||||
|
||||
|
||||
function harvest_entity_catalog_with_pg_type(conn::LibPQ.Connection, table::String, column::String)
|
||||
try
|
||||
# 1. Query the actual data
|
||||
data_query = "SELECT DISTINCT $(column) FROM $(table) WHERE $(column) IS NOT NULL;"
|
||||
df = DataFrame(LibPQ.execute(conn, data_query))
|
||||
values = String.(strip.(string.(df[!, 1])))
|
||||
|
||||
# 2. Query the database schema for the column's data type
|
||||
# Note: Postgres stores unquoted table/column names in lowercase
|
||||
type_query = """
|
||||
SELECT data_type
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = lower('$(table)')
|
||||
AND column_name = lower('$(column)');
|
||||
"""
|
||||
type_df = DataFrame(LibPQ.execute(conn, type_query))
|
||||
pg_type = isempty(type_df) ? "unknown" : type_df[1, 1]
|
||||
|
||||
return (values = values, type = pg_type)
|
||||
|
||||
catch e
|
||||
@error "Failed to harvest catalog" exception=e
|
||||
return (values = String[], type = "unknown")
|
||||
finally
|
||||
close(conn)
|
||||
end
|
||||
end
|
||||
|
||||
# Usage:
|
||||
# result = harvest_entity_catalog_with_pg_type(conn, "users", "created_at")
|
||||
# println(result.values) # ["2023-01-01", "2023-02-15"]
|
||||
# println(result.type) # "timestamp without time zone"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user