Spaces:
Runtime error
Runtime error
""" | |
#TODO: make a agent that uses HUMAMN as a tool to get: | |
- Purpose of science experiment | |
- What fields of study do they already know of | |
#IDEA: Platform generate more indepth experiments by generaing a data set and generate / collect scienfic data | |
### Chatbot | |
the chatbot helps the BOUNTY_BOARD_CHAIN generate science experiments | |
### EXPERIMENT and Provide feedback on experiments | |
### Interrgration | |
- I need to intergrate this code into the app. This includes creating an id for each post, and potentially and a comment section for each "Experiment" | |
- I addition i need to generate a mostly pinecone retriever to geenrate scientific experiments from the "community vectore search" | |
- potentially have prenium users store their private data, but i may not implement this during the hackathon | |
""" | |
# https://python.langchain.com/docs/modules/model_io/output_parsers/types/structured | |
from langchain.output_parsers import ResponseSchema, StructuredOutputParser | |
from langchain.prompts import PromptTemplate | |
from langchain_openai import ChatOpenAI | |
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder | |
from langchain.memory import ConversationBufferMemory | |
from langchain_core.runnables import RunnablePassthrough | |
from langchain.retrievers import ArxivRetriever, pubmed | |
from langchain_core.output_parsers import StrOutputParser | |
from langchain.retrievers import ArxivRetriever | |
from langchain.retrievers import PubMedRetriever | |
from langchain.retrievers import WikipediaRetriever | |
from operator import itemgetter | |
response_schemas = [ | |
ResponseSchema(name="Experiment_Name", description="the name given to the experiment"), | |
ResponseSchema(name="Material", description="list of materials need to perfrom the experiments", type="list"), | |
ResponseSchema(name="Sources", description="list of sources where the information was retrievered from", type="list"), | |
ResponseSchema(name="Protocal", description="detailed instructions On how to make the item or perform the experiment", type="list"), | |
ResponseSchema(name="Fields_of_study", description="the fields of study that his experiment uses", type="list"), | |
ResponseSchema(name="Purpose_of_Experiments", description="assume what the user is trying to acchieve"), | |
ResponseSchema(name="Safety_Precuation", description="What does the User need to know to avoid any potential harm"), | |
ResponseSchema(name="Level_of_Difficulty", description="How difficult is it to perform this experiment ecample beginner, novice, Intermidiate, Hard "), | |
# | |
] | |
output_parser = StructuredOutputParser.from_response_schemas(response_schemas) | |
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True) | |
format_instructions = output_parser.get_format_instructions() | |
prompt = maker_prompt = PromptTemplate( | |
template="You must generate a well detailed list of items for creating a given item from scratch. \ | |
Also describe the purpose for a text-to-3d model to use for extra context\n{format_instructions}\n{question}\n{context}", | |
input_variables=["question"], | |
partial_variables={"format_instructions": format_instructions}, | |
memory = memory | |
) | |
def join_strings(*args: str) -> str: | |
""" | |
Join an arbitrary number of strings into one string. | |
Args: | |
*args: Variable number of strings to join. | |
Returns: | |
str: Joined string. | |
""" | |
return ''.join(args) | |
def format_docs(docs): | |
return "\n\n".join([join_strings(d.page_content, d.metadata['Entry ID'],d.metadata['Title'], ) for d in docs]) | |
arxiv_retriever = ArxivRetriever(load_max_docs=2) | |
# model = ChatOpenAI(temperature=0) | |
model = ChatOpenAI(temperature=0,model="gpt-4") | |
retriver = arxiv_retriever = ArxivRetriever(load_max_docs=2) | |
pub_med_retriever = PubMedRetriever() | |
wikipedia_retriever = WikipediaRetriever() | |
arxiv_chain = ( | |
{"context": arxiv_retriever, "question": RunnablePassthrough()} | |
| prompt | |
| model | |
| output_parser | |
) | |
pub_med_chain = ( | |
{"context": pub_med_retriever, "question": RunnablePassthrough()} | |
| prompt | |
| model | |
| output_parser | |
) | |
wikipedia_chain = ( | |
{"context": wikipedia_retriever, "question": RunnablePassthrough()} | |
| prompt | |
| model | |
| output_parser | |
) | |
if __name__ == "__main__": | |
query = "how to create alectronoic on a cellulose subtstrate" | |
pub_med_data = pub_med_chain.invoke(query) | |
wiki_data = wikipedia_chain.invoke(query) | |
x=0 | |