mirror of
https://github.com/abetlen/llama-cpp-python.git
synced 2023-09-07 17:34:22 +03:00
Re-organize examples folder
This commit is contained in:
55
examples/high_level_api/langchain_custom_llm.py
Normal file
55
examples/high_level_api/langchain_custom_llm.py
Normal file
@@ -0,0 +1,55 @@
|
||||
import argparse
|
||||
|
||||
from llama_cpp import Llama
|
||||
|
||||
from langchain.llms.base import LLM
|
||||
from typing import Optional, List, Mapping, Any
|
||||
|
||||
|
||||
class LlamaLLM(LLM):
|
||||
model_path: str
|
||||
llm: Llama
|
||||
|
||||
@property
|
||||
def _llm_type(self) -> str:
|
||||
return "llama-cpp-python"
|
||||
|
||||
def __init__(self, model_path: str, **kwargs: Any):
|
||||
model_path = model_path
|
||||
llm = Llama(model_path=model_path)
|
||||
super().__init__(model_path=model_path, llm=llm, **kwargs)
|
||||
|
||||
def _call(self, prompt: str, stop: Optional[List[str]] = None) -> str:
|
||||
response = self.llm(prompt, stop=stop or [])
|
||||
return response["choices"][0]["text"]
|
||||
|
||||
@property
|
||||
def _identifying_params(self) -> Mapping[str, Any]:
|
||||
return {"model_path": self.model_path}
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-m", "--model", type=str, default="./models/...")
|
||||
args = parser.parse_args()
|
||||
|
||||
# Load the model
|
||||
llm = LlamaLLM(model_path=args.model)
|
||||
|
||||
# Basic Q&A
|
||||
answer = llm(
|
||||
"Question: What is the capital of France? Answer: ", stop=["Question:", "\n"]
|
||||
)
|
||||
print(f"Answer: {answer.strip()}")
|
||||
|
||||
# Using in a chain
|
||||
from langchain.prompts import PromptTemplate
|
||||
from langchain.chains import LLMChain
|
||||
|
||||
prompt = PromptTemplate(
|
||||
input_variables=["product"],
|
||||
template="\n\n### Instruction:\nWrite a good name for a company that makes {product}\n\n### Response:\n",
|
||||
)
|
||||
chain = LLMChain(llm=llm, prompt=prompt)
|
||||
|
||||
# Run the chain only specifying the input variable.
|
||||
print(chain.run("colorful socks"))
|
||||
Reference in New Issue
Block a user