import gradio as gr from langchain_openai.embeddings import OpenAIEmbeddings from langchain.agents import load_tools import time from time import sleep from css import * import replicate from pre import * from search import * from post import * os.environ["REPLICATE_API_TOKEN"] = "r8_IYJpjwjrxegcUfBeBbyUxErJXXsnHDM4AlSQQ" os.environ["OPENAI_API_KEY"] = "sb-6a683cb3bd63a9b72040aa2dd08feff8b68f08a0e1d959f5" os.environ['OPENAI_BASE_URL'] = "https://api.openai-sb.com/v1/" os.environ["SERPAPI_API_KEY"] = "dcc98b22d5f7d413979a175ff7d75b721c5992a3ee1e2363020b2bbdf4f82404" embedding_model = OpenAIEmbeddings() tools_google = load_tools(["serpapi"]) llm=ChatOpenAI(model="gpt-3.5-turbo-0125", temperature=0.6) flag="None" selected_model = None def process_option(option): global selected_model, llm, flag # 使用全局变量 llm= ChatOpenAI(model="gpt-3.5-turbo-0125", temperature=0.6) if option in ["gpt-3.5-turbo-0125", "gpt-4o", "gpt-4o-mini","None"]: selected_model = option llm = ChatOpenAI(model=selected_model, temperature=0.6) elif option=="llama-3-70b": flag="llama-3-70b" elif option == "llama-3-8b": flag = "llama-3-8b" elif option=="mistral": flag = "mistral" return selected_model options = ["gpt-3.5-turbo-0125", "gpt-4o", "gpt-4o-mini", "llama-3-70b","llama-3-8b","mistral","None"] selected_search = None def search_option(option): global selected_search if option in ["bing_news","baidu_news","google_news"]: selected_search=option search_options=["bing_news","baidu_news","google_news"] def update_ans_box_label(selected_model): return gr.update(label=selected_model) origin_prompt = ChatPromptTemplate.from_template(template) def detect_fake_news(news,context,progress=gr.Progress()): progress(0, desc="初始化") sleep(1) # Simulate some processing time chain = origin_prompt | llm | StrOutputParser() ori_result=chain.invoke(news) progress(0.25, desc="分割子句") sleep(1) cap_result=capture_sub_queries(news) progress(0.50, desc="提取相关信息") sleep(1) information=context+baidu(cap_result) result = detect_chain.invoke({"news": news, "text": information}) result = extract_clauses_with_counts(result) if (result.count.get("不确定的子句个数")): if selected_search == "bing_news": search_text=search_bing(news) elif selected_search=="baidu_news": search_text=search_baidu(news) elif selected_search=="google_news": search_text=search_google(news) information = search_text + information progress(0.75, desc="Running main chain...") sleep(1) if flag=="None": rag_chain = rag_prompt | llm | StrOutputParser() rag_result = rag_chain.invoke({"news": news,"information":information}) else: input = { "top_p": 0.9, "prompt": rag_prompt.format( news=news, information=information ), "min_tokens": 0, "temperature": 0.6, "prompt_template": "system\n\nYou are a helpful assistantuser\n\n{prompt}assistant\n\n", "presence_penalty": 1.15 } if flag == "llama-3-70b": output = replicate.run("meta/meta-llama-3-70b-instruct", input=input) elif flag == "llama-3-8b": output = replicate.run("meta/meta-llama-3-8b-instruct", input=input) elif flag == "mistral": output = replicate.run("mistralai/mixtral-8x7b-instruct-v0.1", input=input) rag_result = "".join(output) progress(1, desc="完成") rag_result=json.loads(rag_result) rag_result="这是"+rag_result['label']+","+rag_result['explanation'] return cap_result,information, ori_result, rag_result def toggle_visibility(is_visible): # 切换文本框的可见性 new_visibility = not is_visible return gr.update(visible=new_visibility),gr.update(visible=new_visibility), new_visibility current_css = css1 def toggle_style(): global current_css # 切换CSS样式 if current_css == css1: current_css = css2 else: current_css = css1 # 返回更新后的HTML内容 return f'' with gr.Blocks(css=current_css) as iface: gr.Markdown("