AI实践之:我是如何让公司员工免费使用Midjourney绘画工具的

2,058 阅读4分钟

背景

作为一名技术架构师,我一直在寻找更好的AI绘画工具来提高我们公司设计人员的工作效率和创意。Midjourney是一款智能AI绘画工具,具有很强的绘画能力和灵活性,但是它的使用却存在一些限制。以前,如果要使用Midjourney,必须先使用翻墙软件翻墙,然后需要一个Discord账号登录到Discord平台的Midjourney频道才可以进行绘画,而且一个Discord账号只能免费绘画25次,后续的次数需要收费

Midjourney嵌入到钉钉

为了解决这些限制,我决定将Midjourney嵌入到公司的钉钉机器人中,这样公司所有人不需要翻墙就能直接使用Midjourney,而且不需要为此付费,绘画次数没有限制。

实现这个目标的过程并不是很复杂,我只需要为一个Discord账号付费,然后通过一个钉钉机器人对接这个Discord账号,这样就可以让所有的公司员工通过钉钉机器人来使用Midjourney绘画工具了。

效果展示

Dingtalk_20230505162534.jpg

优点

这个方案的优点在于,它不仅可以让公司员工免费使用Midjourney绘画工具,而且可以极大地提高工作效率,因为员工不需要再去寻找其他绘画工具,而是可以直接在钉钉上完成绘画任务。此外,这个方案还可以节省公司的成本,因为不需要为每个员工单独购买Midjourney账号,只需要为一个账号付费即可。

实施细节

具体来说,我首先在Discord平台上注册了一个Midjourney账号,并为它付费,这样就可以获得无限次数的免费绘画机会。然后,我创建了一个钉钉机器人,将它与Midjourney账号对接。这个钉钉机器人可以通过简单的命令来调用Midjourney绘画工具,让公司员工可以直接在钉钉上使用Midjourney来绘画,而不需要登录到Discord平台。

相关代码:请求discord接口发送提示词

def send_prompt_to_discord(prompt: str):  
    # Discord接口请求参数
    payload = {  
        "type": 2,  
        "application_id": "通过抓包获取",  
        "guild_id": 通过抓包获取,  
        "channel_id": 通过抓包获取,  
        "session_id": "通过抓包获取",  
        "data": {  
            "version": "通过抓包获取",  
            "id": "通过抓包获取",  
            "name": "imagine",  
            "type": 1,  
            "options": [{"type": 3, "name": "prompt", "value": prompt}],  
            "application_command": {  
                "id": "通过抓包获取",  
                "application_id": "通过抓包获取",  
                "version": "通过抓包获取",  
                "default_permission": True,  
                "default_member_permissions": None,  
                "type": 1,  
                "name": "imagine",  
                "description": "There are endless possibilities...",  
                "dm_permission": True,  
                "options": [{"type": 3, "name": "prompt", "description": "The prompt to imagine", "required": True}]  
            },  
            "attachments": []  
        }  
    }  

    # Discord接口请求头  
    headers = {  
        'authorization': SALAI_TOKEN  
    }  

    # 发送请求  
    response = requests.post("<https://discord.com/api/v9/interactions>", json=payload, headers=headers)  

    return response

相关代码:请求discord接口发送提示词

def _do_query(self):
    header = {
    'authorization' : SALAI_TOKEN
    }

    response = requests.get("https://discord.com/api/v9/channels/<替换成你自己建立的频道名称>/messages?limit=10", headers = header)

    return json.loads(response.content)

字段解释

CHANNEL_ID:机器人将发送提示的 Discord 频道的 ID
SERVER_ID:机器人将发送提示的 Discord 服务器的 ID
SALAI_TOKEN:支付订阅费用的用户令牌
image.png image.png

区分绘制内容属于哪个请求

为了能够确认每个员工对应的绘制结果,我们需要在同一时间段内多名员工使用Midjourney进行绘画时,提前为每个prompt添加一个消息的唯一标识。在轮询结果时,我们可以基于这个唯一标识来定位返回对象。这个唯一标识最好是一个Midjourney无法解释的内容,因为如果该标识被Midjourney识别为提示内容,就有可能影响结果并导致偏差。这样,我们就可以更加准确地获取到每个员工的绘制结果。 08DB9073-4517-466f-A551-10489DBFE539.png

最后

总的来说,通过将Midjourney嵌入到钉钉机器人中,我成功地让公司员工免费使用了这个优秀的绘画工具,提高了工作效率,节省了成本。这个方案的实现过程并不复杂,只需要一些简单的技术操作就可以完成。我相信,这个方案对于其他设计师和企业也会有一定的参考价值。

lQLPJwTPTcovXWbNBADNBACwadEQeeBlOdYEQc1htcCDAQ_1024_1024.png

使用Midjourney绘制的室内家居实景

Prompt: Photography of a Primitive Interior Design Style for Modern Times Apartment, a balcony, Mid-Century Modern, Concrete, Wood, Design, morning light, with exclusive finishes and minimalist detailing throughout, intrinsic details