記事検索

検索ワードを入力してください。
Sky Tech Blog
Difyで​作成した​ワークフローを​LangChain変換してみました

Difyで​作成した​ワークフローを​LangChain変換してみました

Difyというローコードツールで作成したワークフローを、LangChainに変換する方法について説明しています。Difyのコンテナ管理の課題を解決するため、Azure OpenAI Serviceを用いた具体的な変換手順を紹介しています。

はじめに

ローコードツールであるDifyをご存知でしょうか。
ドラッグ&ドロップ操作でアプリケーションを構築することができる、Agentic AI開発プラットフォームです。
非常に便利ではあるのですが、Difyを構築する際にはAPIやDBなど複数のコンテナの構築が必要になります。
Difyで構築したサービスを運用するとなった際には、このコンテナの管理というのがネックになることがあります。
そのため、今回はDifyで作成したワークフローをLangChainに変換する方法を紹介します。

変換方​法

今回はAzure OpenAI Serviceのモデルを使用いたします。

まず、Difyで作成したワークフローのブロックごとに関数化します。
ブロックの結果は戻り値として返すようにします。
ブロックごとに入力情報や前段のLLMの結果などが必要になると思いますが、これらも関数実行時に引数として渡すことで、問題なくブロックの処理が動作します。
※モデル名やプロンプト情報は使用しやすさから、定数及び設定ファイルなどで管理して呼び出しています。

def node_1(message, key):
    model = get_model(PROVIDER_AZURE, MODEL_NAME)

    prompt = prompts["prompt"]

    system_message_content = prompt

    system_messages = [
        SystemMessage(
            content=f"{system_message_content}",
            additional_kwargs={},
            response_metadata={}
        )
    ]
    user_messages = [
        HumanMessage(
            content=f'## 入力\n{message}\n\n## 出力\n(ここに来る内容を出力してください)//',
            additional_kwargs={},
            response_metadata={}
        )
    ]
    chat_prompt = ChatPromptTemplate.from_messages(system_messages + user_messages)
    response = model.invoke(chat_prompt.format(message=message))
    return response.content

また、IF ELSEの分岐についても、PythonのIF文を活用すればOKです。

if node_1_output == "A":
    return node_1_output 

ワークフローでは開始や終了といったブロックもありますが、LangChain変換するにあたっては必要ありません。

最後にmain関数で作成した関数をワークフローと同じになるように記載していけば完成です。

def main():
    message = sys.argv[1]
    key = sys.argv[2]
    node_1_output = node_1(message, key)
    if node_1_output == "A":
        return "入力をやり直してください" 
    return node_1_output 

さい​ごに

今回はシンプルな作り方の紹介でしたが、HTTPリクエストやより細かなオプションの制御などといった点も実現できます。
Difyでの構築は非常に便利ですが、運用上難しいというケースもありますので、今回のLangChain変換のように柔軟に置き換えていっていただければ幸いです。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム