# GenOS 라이브러리 활용

업로드한 PyPI 패키지를 코드 스페이스, 워크플로우에서 어떻게 사용하는지 알아보겠습니다.

## 1. 코드스페이스 활용

### 1.1. pip install <라이브러리명>

<figure><img src="https://2954186584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdElGVBdgd1cUYoUV6rEb%2Fuploads%2Fgit-blob-64c9569ec4c03607b3f63d1a8281adf875876a42%2Fc46.png?alt=media" alt=""><figcaption></figcaption></figure>

코드스페이스 환경은 제노스 내부 PyPI 서버를 참조하도록 사전 설정되어 있어, 추가 설정 없이 `pip install <라이브러리명>` 명령어로 모듈을 즉시 설치할 수 있습니다

### 1.2. 코드 작성

```python
from simple_add import add

result = add('3','5')

print(result)
```

입력된 문자열 인자를 숫자 타입형으로 자동 변환하여 연산한 뒤, 결과값을 다시 문자열로 반환하는 `add` 함수 활용 예시입니다

### 1.3. 출력 확인

<figure><img src="https://2954186584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdElGVBdgd1cUYoUV6rEb%2Fuploads%2Fgit-blob-668b2ecc269ba6cc0b5c70630cea17a5a8793792%2Fc47.png?alt=media" alt=""><figcaption></figcaption></figure>

* 만약 라이브러리를 찾을 수 없다는 에러(`ModuleNotFoundError`)가 발생한다면, 아래 명령어를 통해 가상환경(venv)이 활성화되어 있는지 확인해 주세요

```
source /.venv/bin/activate
```

## 2. 워크플로우 활용

워크플로우에서도 필요한 라이브러리를 import 할 수 있습니다.

### 2.1. 워크플로우 생성

{% content-ref url="../../workflow" %}
[workflow](https://genos-docs.gitbook.io/default/basic-tutorials/guides/workflow)
{% endcontent-ref %}

워크플로우 만들기 부분을 참고하시길 바랍니다.

### 2.2. 워크플로우 상세

#### 2.2.1. 첫번째 Flowise Step

<figure><img src="https://2954186584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdElGVBdgd1cUYoUV6rEb%2Fuploads%2Fgit-blob-a3995d28b2098deb525634d77e41c3c370ebf999%2Fc48.png?alt=media" alt=""><figcaption></figcaption></figure>

간단하게 start와 Custom Function 노드로 구성된 flowise step입니다.

<figure><img src="https://2954186584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdElGVBdgd1cUYoUV6rEb%2Fuploads%2Fgit-blob-ef70ee5e89545667c61fde8c5e34297e6b01a7de%2Fc49.png?alt=media" alt=""><figcaption></figcaption></figure>

start 노드에서 nums 변수를 만들었습니다.

<figure><img src="https://2954186584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdElGVBdgd1cUYoUV6rEb%2Fuploads%2Fgit-blob-fd1f766f0ac91017e57ec7a1125cfd35ae06f7cc%2Fc50.png?alt=media" alt=""><figcaption></figcaption></figure>

Custom Function 노드에서 nums 변수를 입력인 question으로 업데이트하였습니다.

#### 2.2.2. 두번째 Python Step

```python
async def run(data: dict) -> dict:
    from util.genos_utils import genos_import
    simple_add = genos_import("simple_add")
    a,b = data['agentFlowExecutedData'][1]['data']['state']['nums'].split()
    result = simple_add.add(a,b)
    data['question'] = result
    return data
```

작성 예시입니다.

워크플로우 python step에서 `import genos`를 할 땐 다음과 같이

`from util.genos_utils import genos_import`를 한 이후

`클래스명 = genos_import("라이브러리명")` 을 이용해야 합니다.

#### 2.2.3. 세번째 Flowise Step

<figure><img src="https://2954186584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdElGVBdgd1cUYoUV6rEb%2Fuploads%2Fgit-blob-a1c886a5b9335aa783655131440443198aef2b74%2Fc51.png?alt=media" alt=""><figcaption></figcaption></figure>

세번째 flowise step 역시 start와 Direct Reply 노드로 구성된 간단한 step입니다. Direct Reply에서

<figure><img src="https://2954186584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdElGVBdgd1cUYoUV6rEb%2Fuploads%2Fgit-blob-c8cebfee7fa8140e7d0c2c0d521df516c3b8bbbc%2Fc52.png?alt=media" alt=""><figcaption></figcaption></figure>

입력값인 question을 그대로 출력하게 하였습니다.

### 2.3. 출력 확인

워크플로우를 토대로 채팅을 만들었습니다. 만드는 방법은

{% content-ref url="../../application/dev-chat" %}
[dev-chat](https://genos-docs.gitbook.io/default/basic-tutorials/guides/application/dev-chat)
{% endcontent-ref %}

를 참고하시길 바랍니다.

<figure><img src="https://2954186584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdElGVBdgd1cUYoUV6rEb%2Fuploads%2Fgit-blob-ba1ded2c5c37b54ea5e76f134aafccf9b6e3f537%2Fc53.png?alt=media" alt=""><figcaption></figcaption></figure>

다음과 같이 정확한 결과를 출력하는 걸 볼 수 있습니다.
