Package: sciphi
SciPhi [ΨΦ]: AI's Knowledge Engine 💡With SciPhi, users can:Custom Data Creation: Generate datasets via LLMs that are tailored to your needs.Anthropic, OpenAI, vLLM, and SciPhi API are supported.Retriever-Augmented Generation (RAG) on Demand: Built-in RAG Provider Interface to anchor generated data to real-world sources.Coming Soon- End-to-end cloud and local RAG knowledge engine API for seamless use.Customize Data Creation: Generate datasets via LLMs that are tailored to your needs, for LLM training, RAG, and more.Included Example- A dedicated textbook module which writes RAG-enhanced textbooks directly from a provided table of contents.DocumentationFor more detailed information, tutorials, and API references, please visit the officialSciPhi Documentation.Fast SetuppipinstallsciphiOptional Extra Dependenciespipinstall'sciphi[all_with_extras]'All (with extras, e.g. vLLM):'sciphi[all_with_extras]'All (no vLLM):'sciphi[all]'Anthropic:'sciphi[anthropic_support]'HF (includes Torch):'sciphi[hf_support]'VLLM (includes Torch):'sciphi[vllm_support]'Setup Your EnvironmentNavigate to your working directory and use a text editor to adjust the.envfile with your specific configurations.# Proprietary ProvidersOPENAI_API_KEY=your_openai_api_keyANTHROPIC_API_KEY=your_anthropic_api_key# Open Source ProvidersHF_TOKEN=your_huggingface_token# vLLMVLLM_API_KEY=your_vllm_api_key# for remote vLLM use.# SciPhiSCIPHI_API_KEY=your_sciphi_api_key# for SciPhi API use.# RAG Provider SettingsRAG_API_KEY=your_rag_server_api_keyRAG_API_BASE=your_rag_api_base_urlAfter entering your settings, ensure you save and exit the file.FeaturesCommunity & SupportEngage with our vibrant community onDiscord.For tailored inquiries or feedback, pleaseemail us.Multiple provider supportSciPhi supports multiple LLM providers (e.g. OpenAI, Anthropic, HuggingFace, and vLLM) and RAG providers (e.g. SciPhi). The framework supports seamless integration of these providers. To run an example completion with SciPhi, execute:python-msciphi.scripts.sciphi_chat--llm_model_name=SciPhi/SciPhi-Self-RAG-Mistral-7B-32k--query="Write a few paragraphs on general relativity. Include the mathematical definition of Einsteins field equation in your writeup."Configurable Data GenerationUse SciPhi to generate datasets tailored to your specifications. By running the data augmenter with a chosen dataset and prompt configuration, you can produce new datasets with a desired number of samples.python-msciphi.scripts.data_augmenter--config-path=$PWD/sciphi/config/prompts/question_and_answer.yaml--config_name=None--n_samples=1Inspecting the output of this command:{"question":"What is the reaction called when alcohol and carboxylic acids react?","answer":"Fischer esterification"}...{"question":"Are tertiary alcohols resistant to oxidation?","answer":"Yes"}This command can be readily expanded to other configurations. For example, to apply chain of thought augmentation to thesciqdataset, runpython -m sciphi.scripts.data_augmenter --config_name=chain_of_thought.Textbook GenerationThis is an effort to democratize access to top-tier textbooks. This can readily be extended to other domains, such as internal commercial documents.Dry Run:python-msciphi.scripts.textbook_generatordry_run--toc_dir=sciphi/data/sample/table_of_contents--rag-enabled=FalseThis will perform a dry-run over the default textbooks stored insciphi/data/sample/textbooks.Note- this must be run from the root of the repository, or else you will need to update thetoc_diraccordingly. Setting rag-enabled toTruewill enable RAG augmentation during the generation process. You may customize the RAG provider through additional arguments.Textbook Generation:python-msciphi.scripts.textbook_generatorrun--toc_dir=sciphi/data/sample/table_of_contents--rag-enabled=False--filter_existing_books=FalseReplacedry_runin step 1 withrunto generate one textbook for each table of contents in the target directory. See asample textbook here.Example With a Custom Table of Contents:Prepare your table of contents and save it into$PWD/toc/test.yaml. Then, run the following command:python-msciphi.scripts.textbook_generatorrun--toc_dir=toc--output_dir=books--data_dir=$PWDFor help with formatting your table of contents,see here.Custom Settings & RAG Functionality:Simply switchrag-enabledtoTrue. Ensure you have the right.envvariables set up, or provide CLI values forrag_api_baseandrag_api_key.Alternatively, you may provide your own custom settings in a YAML file. See thedefault settings configuration here.Important:To make the most out of grounding your data with Wikipedia, ensure your system matches our detailed specifications. An example RAG provider can be seenhere. More high quality outbook books are availablehere.RAG Eval HarnessMeasure the efficacy of your RAG pipeline with our unique evaluation harness.python-msciphi.scripts.rag_harness--n-samples=100--rag-enabled=True--evals_to_run="science_multiple_choice"This example evaluates your RAG over 100 science multiple-choice questions and reports the final accuracy.DevelopmentBasic Example - Generate a chat completion with SciPhiHere's how you can use SciPhi to quickly set up and retrieve chat completions, without diving deep into intricate configurations:fromsciphi.interfaceimport(SciPhiFormatter,SciPhiLLMInterface,SciPhiWikiRAGInterface,)# SciPhi RAG Interface# Supports calls like `contexts = rag_interface.get_contexts(query)`rag_interface=SciPhiWikiRAGInterface()# SciPhi LLM Interfacellm_interface=SciPhiLLMInterface(rag_interface)# Get the completion for a given promptquery:str="Who is the president of the United States?"conversation.append({"role":"user","content":query})generation_config=GenerationConfig(model_name=llm_model_name,stop_token=SciPhiFormatter.INIT_PARAGRAPH_TOKEN,# pass in any other generation settings here)completion=llm_interface.get_chat_completion(conversation,generation_config)print(completion)# The current President of the United States is Joe Biden.Advanced Example - Instantiate your own LLM and RAG providerHere's an example of how you can instantiate your own LLM and RAG provider using SciPhi:fromsciphi.coreimportLLMProviderName,RAGProviderNamefromsciphi.interfaceimportLLMInterfaceManager,RAGInterfaceManagerfromsciphi.llmimportGenerationConfig# ... Inputs ...# RAG Provider Settingsrag_interface=(RAGInterfaceManager.get_interface_from_args(RAGProviderName(rag_provider_name),# fall back on LLM provider if no RAG provider is specifiedapi_base=rag_api_baseorllm_api_base,api_key=rag_api_keyorllm_api_key,top_k=rag_top_k,)ifrag_enabledelseNone)# LLM Provider Settingsllm_interface=LLMInterfaceManager.get_interface_from_args(LLMProviderName(llm_provider_name),api_key=llm_api_key,api_base=llm_api_base,# Currently only consumed by SciPhirag_interface=rag_interface,# Consumed by single-model providers# e.g. HuggingFace and vLLMmodel_name=llm_model_name,)# Typical LLM Generation Settingscompletion_config=GenerationConfig(temperature=llm_temperature,top_k=llm_top_k,max_tokens_to_sample=llm_max_tokens_to_sample,model_name=llm_model_name,skip_special_tokens=llm_skip_special_tokens,stop_token=SciPhiFormatter.INIT_PARAGRAPH_TOKEN,)# Get the completion for a given promptcompletion=llm_interface.get_completion(prompt,generation_config)# ... Continue ...Supported LLM providers include OpenAI, Anthropic, HuggingFace, and vLLM. For RAG database access, configure your own or use the SciPhiWorld Databasef API.Setting Up LocallyClone the Repository:gitclonehttps://github.com/emrgnt-cmplxty/sciphi.gitcdsciphiInstall Dependencies:SciPhi uses Poetry for dependency management:# If you do not have Poetry installedpip3installpoetry# Install the core dependenciespoetryinstall# Install all supplementary dependenciespoetryinstall-Eall_with_extrasNote: The same dependencies available with pip installation are also available here.System RequirementsEssential PackagesPython:>=3.9,<3.12Libraries:bs4:^0.0.1fire:^0.5.0openai:0.27.8pandas:^2.1.0python-dotenv:^1.0.0pyyaml:^6.0.1retrying:^1.3.4sentencepiece:^0.1.99torch:^2.1.0tiktoken:^0.5.1tqdm:^4.66.1Supplementary PackagesAnthropic Integration:anthropic:^0.3.10Hugging Face Tools:accelerate:^0.23.0datasets:^2.14.5transformers:^4.33.1VLLM Tools:vllm:0.2.0Licensing and AcknowledgmentThis project is licensed under theApache-2.0 License.Citing Our WorkIf SciPhi plays a role in your research, we kindly ask you to acknowledge us with the following citation:@software{SciPhi,
author = {Colegrove, Owen},
doi = {Pending},
month = {09},
title = {{SciPhi: A Framework for LLM Powered Data}},
url = {https://github.com/sciphi-ai/sciphi},
year = {2023}
}