Metadata-Version: 2.1
Name: friendlly
Version: 0.2.2
Summary: Your friendlly ai assistant
Home-page: https://github.com/xl0/friendlly
Author: Alexey
Author-email: alexey.zaytsev@gmail.com
License: Apache Software License 2.0
Keywords: nbdev jupyter notebook python
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: License :: OSI Approved :: Apache Software License
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: claudette
Requires-Dist: cairosvg
Requires-Dist: psutil
Provides-Extra: dev
Requires-Dist: python-dotenv; extra == "dev"
Requires-Dist: pillow; extra == "dev"

# FriendLLy


<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

## Install

``` sh
pip install friendlly
```

## Front-end support

| Front-end | Markdown | Markdown cell | Code cell | Access current outputs | Access previous cells/outputs | Autorun cells |
|----|----|----|----|----|----|----|
| Jupyter nbclassic | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Jupyter VSCode | ✅ | 🚫 | ✅ | ✅ | ✅ | 🚫 |
| Jupyter Lab/notebook 7 | ✅ | 🚫 | ✅ | ✅ | 🚫 | 🚫 |

⚠️ FriendLLy works best in Jupyter nbclassic, and is useable in VSCode.
Jupyter lab/notebook 7 support is somewhat limited for now.

You can install `jupyter nbclassic` alongside `jupyter notebook` or
`juter lab` without causing any conflicts:

    pip install nbclassic

And run it with

    jupyter nbclassic

## How to use

``` python
import os
# os.environ['ANTHROPIC_API_KEY'] = 'your-very-secret-anthropic-api-key'

# Or even better, use dotenv instead:
# (assuming you have an .env file with 'ANTHROPIC_API_KEY=your-very-secret-anthropic-api-key' in it)
import dotenv; dotenv.load_dotenv("../.env");
```

------------------------------------------------------------------------

    %load_ext friendlly

``` python
# %%fr
# Download an image of a cat, resize to 250 on long side, then very briefly describe it in the style of Jeremy Howard
```

Certainly! I’ll download an image of a cat, resize it, and then describe
it briefly in Jeremy Howard’s style. Let’s break this down into steps:

<details>
<summary style="display: list-item">
🧠
</summary>

1.  We’ll use the requests library to download an image.
2.  We’ll use PIL (Python Imaging Library) to process and resize the
    image.
3.  After resizing, we’ll display the image.
4.  Then, I’ll provide a brief description in Jeremy Howard’s style.

</details>

``` python
# %%fr +2 reply
import requests
from PIL import Image
from io import BytesIO

# Download an image of a cat
url = "https://cataas.com/cat"
response = requests.get(url)
img = Image.open(BytesIO(response.content))

# Resize the image
max_size = 250
ratio = max_size / max(img.size)
new_size = tuple([int(x*ratio) for x in img.size])
resized_img = img.resize(new_size, Image.LANCZOS)

# Display the resized image
resized_img
```

![](index_files/figure-commonmark/cell-4-output-1.png)

Alright, let’s describe this image in Jeremy Howard’s style:

“Right, so we’ve got this absolutely cracking image of a cat here. It’s
a proper chonker, sitting on what looks like a blue chair or sofa. The
cat’s got this brilliant tabby pattern - you know, those classic
stripes - and a white belly. And get this, it’s doing that classic cat
thing where it’s squinting its eyes, looking all content and smug. It’s
like it’s saying, ‘Yeah, I own this place.’ Brilliant stuff, really.
This is exactly the kind of image that would make for a fantastic
dataset in computer vision tasks. You could use it for all sorts of
things - cat breed classification, pose estimation, you name it.
Absolutely fascinating, isn’t it?”

## Looking at existing cells

``` python
from PIL import Image
Image.open("cat2.jpg")
```

![](index_files/figure-commonmark/cell-5-output-1.png)

``` python
# %%fr +1
# Describe the image
```

The image shows a cat sitting upright on what appears to be a
light-colored surface or floor. The cat has distinctive features typical
of an Abyssinian breed:

1.  Slender, athletic build
2.  Large, alert ears
3.  Almond-shaped eyes
4.  Reddish-brown or ruddy coat color
5.  Ticked fur pattern, giving it a wild appearance

The cat is sitting in a poised, attentive posture with its tail wrapped
neatly around its body. Its gaze is directed off to the side, giving it
an alert and curious expression. The background appears to be a plain
white or light-colored wall, which contrasts nicely with the cat’s
warm-toned coat.

This image showcases the elegant and regal appearance that Abyssinian
cats are known for, highlighting their unique coat color and sleek
physique.

## Messing around

You might have noticed the `reply` added to the magic of the generated
cells. This is the only way FriendLLy distinguishes between user- and
assistant-generated cells (plus some heuristics for Markdown cells). You
can add such cells yourself, and FriendLLy will think they are
assistant-generated.
