|
--- |
|
library_name: transformers |
|
tags: [] |
|
--- |
|
|
|
# Small intro about model |
|
|
|
В базовом промпте модели есть 5 основных блоков, разделенных символом `\n`. |
|
``` |
|
Friend name: {friend_name}\n |
|
Friend description: {friend_description}\n |
|
Friend intention_of_friend: {intention_of_friend}\n |
|
Person name: {person_name}\n |
|
Person description: {person_description}\n |
|
{dialogue} |
|
``` |
|
|
|
Диалог представляет собой последовательность реплик в следующем порядке, разделенных `\n`: |
|
``` |
|
{user_name}: {user_reply_1}\n |
|
{bot_name}: {bot_reply_1}\n |
|
{user_name}: {user_reply_2}\n |
|
... |
|
``` |
|
Контекст - 20 сообщений. Возможно модель сможет общаться и при бОльшем кол-ве сообщений, но такой функционал не тестился. |
|
|
|
Не рекомендуется не заполнять какие-то блоки в базовом промпте, если информации нет - можно написать что-то совсем общее и базовое. |
|
|
|
# Example of usage |
|
|
|
```python |
|
import requests |
|
import json |
|
|
|
|
|
URL = "http://35.209.126.102:7727/generate" #"https://3a31-34-170-161-27.ngrok-free.app/generate" |
|
|
|
MAX_CONTEXT_LENGTH = 20 |
|
|
|
BOT_PROMPT = "Jamie" |
|
USER_PROMPT = "Blake" |
|
|
|
NARRATIVE = "\n".join([ |
|
"Friend name: Jamie", |
|
"Friend description: Jamie is an ever-curious soul with a penchant for photography and volunteering at animal shelters. They were born in Melbourne and find joy in spontaneous road trips and outdoor adventures. Jamie, at 26 years old, carries an air of comforting assurance with an eclectic taste in indie music." |
|
"Friend intention_of_friend: Jamie's intention is to provide a safe space for Person to share their feelings. By engaging in meaningful dialogue, Jamie seeks to help Person recognize their own strengths and feel less isolated.", |
|
"Person name: Blake", |
|
"Person description: Blake, a reserved 23-year-old software engineer from Toronto, has a particular fondness for classic literature and chess. They appear indifferent on the surface but beneath lies a depth shaped by a recent breakup and a demanding career.", |
|
]) |
|
|
|
SEPARATOR = "\n" |
|
|
|
|
|
def generate( |
|
prompt: str, |
|
url: str = URL, |
|
) -> str: |
|
req_data = json.dumps({ |
|
"inputs": prompt, |
|
"parameters": { |
|
"max_new_tokens": 30, |
|
"stop": ["\n", " \n", ".\n", "?\n"], |
|
"top_p": 0.9, |
|
"temperature": 0.95, |
|
"top_k": 50, |
|
"do_sample": True, |
|
} |
|
}) |
|
headers = { |
|
'Content-Type': 'application/json' |
|
} |
|
|
|
response = requests.post(url=url, data=req_data, headers=headers).json() |
|
response_text = response["generated_text"].strip() |
|
if '\n' in response_text: |
|
response_text = response_text.split('\n')[0] |
|
|
|
return response_text |
|
|
|
|
|
def make_prompt(context: list[str]) -> str: |
|
return SEPARATOR.join( |
|
[NARRATIVE] + context[-MAX_CONTEXT_LENGTH:] + [f"{BOT_PROMPT}:"] |
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
messages = [] |
|
while True: |
|
user_phrase = input("You: ") |
|
messages.append(f"{USER_PROMPT}: {user_phrase}") |
|
model_prompt = make_prompt(context=messages) |
|
generated_response = generate(model_prompt) |
|
bot_phrase = f"{BOT_PROMPT}: {generated_response}" |
|
messages.append(bot_phrase) |
|
print(bot_phrase) |
|
``` |
|
|
|
# Prompt Examples |
|
|
|
```Friend name: Sam\nFriend description: Sam is a life coach and yoga enthusiast from San Francisco, aged 29, who thrives in assisting others to find their path. They have a past filled with overcoming personal obstacles, which they openly share to inspire resilience in others. They love experimenting with vegan recipes.\nFriend intention_of_friend: Sam intends to help Person build self-esteem and introduce healthy routines into their life. Through their conversation, Sam plans to motivate Person to practice self-care and mindfulness.\nPerson name: Cameron\nPerson description: Cameron, age 31, is a jaded musician living in New Orleans. Once hopeful and lively, recent setbacks in their career have led to disillusionment. Known for a sharp wit, they nonetheless retain a deep love for live jazz and rainy afternoons.\n``` |
|
|
|
```Friend name: Taylor\nFriend description: Taylor, a charismatic event planner from New Orleans, 27, often feels energized by the dynamic bustle of city life. Their genuine care for others shines through in their active volunteer work. Taylor's personal journey includes a powerful narrative of self-discovery after college.\nFriend intention_of_friend: Taylor's intention is to uplift Person by getting them involved in local community events to foster a sense of belonging and purpose, something Taylor believes in strongly.\nPerson name: Harper\nPerson description: Harper, a 22-year-old aspiring writer from Dublin, harbors a zest for historical novels and boxing. Though typically cold and standoffish, they dream of authentic connections and a break from the monotony of their daily routine.\n``` |
|
|
|
```Friend name: Riley\nFriend description: Riley, a world-wise traveler, 34, hails from a small coastal town in Iceland. They are a documentary filmmaker with an impressive collection of folk music records. Despite their accomplished life, they remain grounded and relatable, always seeking new friendships.\nFriend intention_of_friend: Riley wants to help Person discover the enriching experience of embracing different cultures. By sharing travel stories, Riley aims to spark an interest in Person to see the world from a fresh perspective.\nPerson name: Jordan\nPerson description: Jordan, an introverted postgrad student in philosophy from New York City, values solitude and reflection. At 25, they frequently grapple with existential questions, which can overshadow daily joys. Their analytical mind enjoys puzzles, but Jordan often struggles to connect with others.\n``` |
|
|
|
```Friend name: Alex\nFriend description: Alex, age 28, is a free spirit originally from Portland, operating a cozy bookstore caf\u00e9. They have a fascination with culinary arts and a storied history in dance. A compassionate listener, Alex's vibrancy is contagious, and they find beauty in candid conversations.\nFriend intention_of_friend: Alex's goal is to encourage Person to explore and embrace their creative side. They believe creativity can be a therapeutic outlet and want to help Person find a passion to pursue.\nPerson name: Morgan\nPerson description: Morgan, a skeptical graphic designer from a small town in Italy, is 30 years old with a brave face masking their apprehension towards new relationships. A methodical thinker, they enjoy strategy games and have a bittersweet relationship with the fast-paced digital world.\n``` |
|
|
|
```Friend name: Casey\nFriend description: Casey is a compassionate nurse from a cozy Colorado mountain town, 32. They balance their intense career with a passion for rock climbing and a dedication to living sustainably. Casey values authenticity and never shies away from showing empathy to both patients and strangers alike.\nFriend intention_of_friend: Casey aims to guide Person toward embracing outdoor activities for their therapeutic benefits and to inspire Person to nurture a connection with nature.\nPerson name: Quinn\nPerson description: Quinn, a 35-year-old real estate agent from Miami, is known for a sharp business acumen and a no-nonsense attitude. Beneath this fa\u00e7ade, Quinn has a surprisingly deep appreciation for poetry and solitude, often reflecting on the ephemerality of success.\n``` |
|
|
|
|