igorpavlov-mgr's picture
Update app.py
3208fd1 verified
import os
import requests
from bs4 import BeautifulSoup
import gradio as gr
from langchain_cohere import ChatCohere
from langchain_core.messages import HumanMessage, SystemMessage
from langfuse import Langfuse
from langfuse.callback import CallbackHandler
from langchain.callbacks.manager import CallbackManager
# ENV VARS must be set in Hugging Face Space settings for API key and Langfuse
api_key = os.environ.get("COHERE_API_KEY")
langfuse_public_key = os.environ.get("LANGFUSE_PUBLIC_KEY")
langfuse_secret_key = os.environ.get("LANGFUSE_SECRET_KEY")
os.environ["LANGFUSE_PUBLIC_KEY"] = langfuse_public_key
os.environ["LANGFUSE_SECRET_KEY"] = langfuse_secret_key
os.environ["LANGFUSE_HOST"] = "https://cloud.langfuse.com"
# Load policy content from Cohere Docs
def fetch_policy():
url = "https://docs.cohere.com/docs/cohere-labs-acceptable-use-policy"
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
content_div = soup.find("div", class_="markdown") or soup.find("main") or soup
return content_div.get_text(separator="\n").strip()[:1500]
except Exception as e:
return "⚠️ Failed to retrieve policy. " + str(e)
context = fetch_policy()
# Setup Langfuse and LLM
langfuse_callback = CallbackHandler()
llm = ChatCohere(
cohere_api_key=api_key,
model="command-r-plus",
callback_manager=CallbackManager([langfuse_callback]),
verbose=True,
)
langfuse = Langfuse()
def run_policy_check(query: str):
trace = langfuse.trace(name="RAG_CommandRPlus_Trace", user_id="huggingface-demo")
messages = [
SystemMessage(content=f"This is the policy context from Cohere:\n{context}"),
HumanMessage(content=query),
]
response = llm.invoke(messages)
trace.score(name="response_quality", value=1)
trace.update(status="completed")
return response.content
# Gradio interface
demo = gr.Interface(
fn=run_policy_check,
inputs=gr.Textbox(label="Ask a question about acceptable use of Command R+", lines=3),
outputs=gr.Textbox(label="Cohere Command R+ Answer"),
title="Policy Q&A on Cohere Command R+",
description="This agent retrieves the Cohere Acceptable Use Policy and answers your ethical use-case questions using LangChain + Command R+.",
)
if __name__ == "__main__":
demo.launch()