logo
Browse Source

add prompt

Signed-off-by: junjie.jiang <junjie.jiang@zilliz.com>
main
junjie.jiang 1 year ago
parent
commit
0caaa5d2be
  1. 56
      README.md
  2. 4
      __init__.py
  3. 21
      template_prompt.py

56
README.md

@ -1,2 +1,56 @@
# template
# question-answer
<br />
## Desription
Prompt Template.
<br />
## Code Example
### Example
```python
from towhee import ops, pipe
import requests
towhee_docs = requests.get('https://raw.githubusercontent.com/towhee-io/towhee/main/README.md').context
temp = """{question}
input:
{context}
"""
p = (
pipe.input('question', 'doc', 'history')
.map(('question', 'doc', 'history'), 'prompt', ops.prompt.template(temp))
.map('prompt', 'answer', ops.LLM.OpenAI())
.output('answer')
)
an1 = p('Tell me something about Towhee', towhee_docs, []).get()[0]
an2 = p('Give an example', towhee_docs, [('Tell me something about Towhee', an1)]).get()[0]
```
## Factory Constructor
Create the operator via the following factory method:
***ops.prompt.template(temp)***
<br />
**Returns:** *List[Dict]*

4
__init__.py

@ -0,0 +1,4 @@
from .template_prompt import TemplatePrompt
def question_answer(temp: str):
return TemplatePrompt(temp)

21
template_prompt.py

@ -0,0 +1,21 @@
from typing import List, Tuple, Dict, Optional
from towhee.operator import PyOperator
class TemplatePrompt(PyOperator):
def __init__(self, temp: str):
super().__init__()
self._template = temp
def __call__(self, **kwargs) -> List[Dict[str, str]]:
history = kwargs.get('history', [])
prompt_str = self._template.format(**kwargs)
ret = [{'question': prompt_str}]
if not isinstance(history, list):
return ret
else:
history_data = []
for item in history:
history_data.append({'question': item[0], 'answer': item[1]})
return history_data + ret
Loading…
Cancel
Save