Kaynağa Gözat

[Example] Add example for creating Sadhguru AI using Embedchain (#1032)

Deshraj Yadav 1 yıl önce
ebeveyn
işleme
6437661837

+ 19 - 0
examples/sadhguru-ai/README.md

@@ -0,0 +1,19 @@
+## Sadhguru AI
+
+This directory contains the code used to implement [Sadhguru AI](https://sadhguru-ai.streamlit.app/) using Embedchain.
+
+## Run locally
+
+You can run Sadhguru AI locally as a streamlit app using the following command:
+
+```bash
+export OPENAI_API_KEY=sk-xxx
+pip install -r requirements.txt
+streamlit run app.py
+```
+
+Note: Remember to set your `OPENAI_API_KEY`.
+
+## Deploy to production
+
+You can create your own Sadhguru AI or similar RAG applications in production using one of the several deployment methods provided in [our docs](https://docs.embedchain.ai/get-started/deployment).

+ 95 - 0
examples/sadhguru-ai/app.py

@@ -0,0 +1,95 @@
+import csv
+import queue
+import threading
+
+import streamlit as st
+
+from embedchain import Pipeline as App
+from embedchain.config import BaseLlmConfig
+from embedchain.helpers.callbacks import (StreamingStdOutCallbackHandlerYield,
+                                          generate)
+
+
+@st.cache_resource
+def sadhguru_ai():
+    app = App()
+    return app
+
+
+# Function to read the CSV file row by row
+def read_csv_row_by_row(file_path):
+    with open(file_path, mode="r", newline="", encoding="utf-8") as file:
+        csv_reader = csv.DictReader(file)
+        for row in csv_reader:
+            yield row
+
+
+@st.cache_resource
+def add_data_to_app():
+    app = sadhguru_ai()
+    file_path = "data.csv"
+    for row in read_csv_row_by_row(file_path):
+        app.add(row["url"], data_type="web_page")
+
+
+app = sadhguru_ai()
+add_data_to_app()
+
+assistant_avatar_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Sadhguru-Jaggi-Vasudev.jpg/640px-Sadhguru-Jaggi-Vasudev.jpg"  # noqa: E501
+
+
+st.title("🙏 Sadhguru AI")
+
+styled_caption = '<p style="font-size: 17px; color: #aaa;">🚀 An <a href="https://github.com/embedchain/embedchain">Embedchain</a> app powered with Sadhguru\'s wisdom!</p>'  # noqa: E501
+st.markdown(styled_caption, unsafe_allow_html=True)  # noqa: E501
+
+if "messages" not in st.session_state:
+    st.session_state.messages = [
+        {
+            "role": "assistant",
+            "content": """
+                Hi, I'm Sadhguru AI! I'm a mystic, yogi, visionary, and spiritual master. I'm here to answer your questions about life, the universe, and everything.
+            """,  # noqa: E501
+        }
+    ]
+
+for message in st.session_state.messages:
+    role = message["role"]
+    with st.chat_message(role, avatar=assistant_avatar_url if role == "assistant" else None):
+        st.markdown(message["content"])
+
+if prompt := st.chat_input("Ask me anything!"):
+    with st.chat_message("user"):
+        st.markdown(prompt)
+        st.session_state.messages.append({"role": "user", "content": prompt})
+
+    with st.chat_message("assistant", avatar=assistant_avatar_url):
+        msg_placeholder = st.empty()
+        msg_placeholder.markdown("Thinking...")
+        full_response = ""
+
+        q = queue.Queue()
+
+        def app_response(result):
+            config = BaseLlmConfig(stream=True, callbacks=[StreamingStdOutCallbackHandlerYield(q)])
+            answer, citations = app.chat(prompt, config=config, citations=True)
+            result["answer"] = answer
+            result["citations"] = citations
+
+        results = {}
+        thread = threading.Thread(target=app_response, args=(results,))
+        thread.start()
+
+        for answer_chunk in generate(q):
+            full_response += answer_chunk
+            msg_placeholder.markdown(full_response)
+
+        thread.join()
+        answer, citations = results["answer"], results["citations"]
+        if citations:
+            full_response += "\n\n**Sources**:\n"
+            for i, citations in enumerate(citations):
+                full_response += f"{i+1}. {citations[1]}\n"
+
+        msg_placeholder.markdown(full_response)
+        st.session_state.messages.append({"role": "assistant", "content": full_response})

+ 50 - 0
examples/sadhguru-ai/data.csv

@@ -0,0 +1,50 @@
+data_type,url,topic
+Article,https://isha.sadhguru.org/in/en/wisdom/article/divorce-remarriage,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/parenting-for-teenager,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/find-fulfillment-in-life,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/women-pursue-career,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/child-no-need-instruction-manual,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/sadhuru-most-popular-blogs-2018,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/children-connect-nature,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/family-matters,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/how-should-parents-influence-lives,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/why-youth-turning-to-alcohol-drugs,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/self-doubt-growth-pangs,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/how-much-freedom-for-kids,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/how-chakras-form-in-fetus,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/attention-deficit-disorder,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/creating-right-atmosphere-children-flower,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/fathers-sons-karan-johar-conversation-sadhguru,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/disability-not-take-away-joy,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/when-parents-quarrel-what-do-you-do,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/mother-in-law-demystified,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/childlessness-bad-omen-or-blessing,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/parenting-without-nonsense,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/education-not-production-line,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/6-tips-to-be-a-truly-great-parent,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/dont-have-one-more,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/sadhgurus-message-to-parents-students-and-teachers,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/a-solution-for-generational-clash,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/education-without-competition,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/do-children-with-disabilities-suffer,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/a-sense-of-wonder,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/5-sadhguru-quotes-on-national-youth-day,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/when-a-child-comes-a-webcomic,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/childrens-day-5-awesome-activities-for-you-your-kids,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/rethinking-education-systems,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/3-back-to-school-tips-for-parents,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/children-discipline-best-way,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/colonel-mn-rai-people-applaud-even-curtains-fall,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/parenting-advice-skills,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/consigli-ai-genitori-per-far-fiorire-i-figli,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/what-is-the-best-kind-of-parenting,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/love-your-kids-liberate-them,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/sadhguru-on-relationships,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/are-you-ready-to-become-a-parent,Parenting
+Article,https://isha.sadhguru.org/in/en/wisdom/article/mahabharat-ep74-what-does-it-take-to-bless-or-curse-someone,Mahabharat
+Article,https://isha.sadhguru.org/in/en/wisdom/article/mahabharat-ep73-king-and-nagas-story-of-retribution-revenge,Mahabharat
+Article,https://isha.sadhguru.org/in/en/wisdom/article/mahabharat-ep72-heaven-or-hell-yudhishthira-makes-unusual-choice,Mahabharat
+Article,https://isha.sadhguru.org/in/en/wisdom/article/mahabharat-ep71-draupadi-pandavas-after-kurukshetra-war,Mahabharat
+Article,https://isha.sadhguru.org/in/en/wisdom/article/mahabharat-ep70-why-karnas-talent-went-waste,Mahabharat
+Article,https://isha.sadhguru.org/in/en/wisdom/article/mahabharat-ep69-devotion-have-place-today,Mahabharat
+Article,https://isha.sadhguru.org/in/en/wisdom/article/mahabharat-ep-68-cyclical-existence-karma,Mahabharat

+ 3 - 0
examples/sadhguru-ai/requirements.txt

@@ -0,0 +1,3 @@
+embedchain
+streamlit
+pysqlite3-binary