docu-searcher / app.py
andreinigo's picture
Upload sfmce embeddings, add sfmce to the app
35cbddc
import numpy as np
import pandas as pd
import openai
from openai.embeddings_utils import get_embedding, cosine_similarity
import gradio as gr
import os
openai.api_key = "sk-"+os.environ['OPENAI_API_KEY']
def get_documentation(query, platform):
embedding = get_embedding(
query,
engine="text-embedding-ada-002")
if platform == "Salesforce Marketing Cloud Intelligence":
df = pd.read_csv("(sfmci)doc_embeddings.csv")
elif platform == "Salesforce Marketing Cloud CDP":
df = pd.read_csv("(sfmcdp)doc_embeddings.csv")
elif platform == "Salesforce Marketing Cloud Personalization":
df = pd.read_csv("(sfmcp)doc_embeddings.csv")
elif platform == "Salesforce Marketing Cloud Engagement":
df = pd.read_csv("(sfmce)doc_embeddings.csv")
df.ada_search = df.ada_search.apply(
lambda x: np.array(x[1:-1].split(','), dtype=np.float32))
df["similarities"] = df.ada_search.apply(
lambda x: cosine_similarity(x, embedding))
df = df.sort_values("similarities", ascending=False).reset_index()
titles = df['title']
contents = df['body']
links = df['link']
res = []
for i in range(3):
res.append("Title: " + titles[i] + "\n\nContent: " +
contents[i] + "\n\nURL: " + links[i])
return res[0], res[1], res[2]
demo = gr.Interface(
fn=get_documentation,
inputs=[
gr.Textbox(label="Question: ", lines=3,),
gr.Radio(["Salesforce Marketing Cloud Intelligence",
"Salesforce Marketing Cloud CDP",
"Salesforce Marketing Cloud Personalization", "Salesforce Marketing Cloud Engagement"], value="Salesforce Marketing Cloud CDP", label="Platform")
],
outputs=[gr.Textbox(label="Results: "),
gr.Textbox(
label="Resultado 2", show_label=False),
gr.Textbox(label="Resultado 3", show_label=False)],
title="Salesforce Documentation Search",
examples=[
["conector de instagram", "Salesforce Marketing Cloud Intelligence"],
# [4, "dog", "zoo", ["ate", "swam"], False],
# [10, "bird", "road", ["ran"], False],
# [8, "cat", "zoo", ["ate"], True],
],
)
if __name__ == "__main__":
demo.launch()