semvec/pypi-packages huggingface dataset:
ca-lark-webhook 0.0.5
lark(feishu) client
License: MIT
Requires Python: >=3.8
Keywords: Feishu,Lark,Webhook,Websocket,Bot

# 企联AI Dev

ConnectAI定位为一个帮助公司更快地建立AI内部工具的平台


## 产品背景

1. 由于各个公司的内部管理流程不同，会有很多无法标准化的长尾AI需求
2. 企业内部技术团队需要将1/3的时间用来开发维护这些内部AI工具
3. 如果能将低代码用于AI内部工具的开发，无疑将极大地提升企业技术团队的效率
4. 既然AI需求是无法标准化的，那么就标准化这些长尾AI需求的开发工具
5. 以低代码的方式提高内部AI工具开发效率


# ca-lark-webhook

1. 生成飞书(Lark) webhook回调接口
2. 注册处理对应事件的回调方法


## python sdk
```
from connectai.lark.webhook import LarkServer

app = LarkServer()

@app.on_bot_message(app_id='cli_xxx', app_secret='xxx', encrypt_key='xxx', message_type='text')
def on_message_callback1(bot, message_id, content, **kwargs):
    text = content['text']
    bot.reply_text(message_id, 'reply: ' + text)

app.start(host='0.0.0.0', port=8888)
```
tice 2.1
Tic-Tac-Toe in Python
License: MIT
Keywords: tic-tac-toe,ttt,ai,multiplayer,min,max,minmax,minimax

'''
Tic-Tac-Toe

1 | 2 | 3
4 | 5 | 6
7 | 8 | 9

```python
# Player types:
tice.player
tice.ai
tice.random
tice.dumb # less smart ai
```

# How to play:
```python
tice.game(tice.player, tice.ai).play(clear=True) # clear console if after each guess?

tice.game(tice.dumb, tice.ai).play()

tice.game(tice.player, tice.random).play()

tice.game(tice.dumb, tice.random).play()

tice.game(tice.player, tice.dumb).play()

tice.game(tice.dumb, tice.dumb).play()

tice.game(tice.random, tice.random).play()

tice.game(tice.ai, tice.ai).play()

tice.game(tice.random, tice.ai).play()

tice.game(tice.player, tice.player).play()
```
'''
connectai 0.0.7
lark(feishu) client
License: MIT
Requires Python: >=3.8
Keywords: Feishu,Lark,Webhook,Websocket,Bot

# 企联AI Dev

ConnectAI定位为一个帮助公司更快地建立AI内部工具的平台


## 产品背景

1. 由于各个公司的内部管理流程不同，会有很多无法标准化的长尾AI需求
2. 企业内部技术团队需要将1/3的时间用来开发维护这些内部AI工具
3. 如果能将低代码用于AI内部工具的开发，无疑将极大地提升企业技术团队的效率
4. 既然AI需求是无法标准化的，那么就标准化这些长尾AI需求的开发工具
5. 以低代码的方式提高内部AI工具开发效率
ca-dingtalk-websocket 0.0.4
dingtalk client
License: MIT
Requires Python: >=3.8
Keywords: Dingtalk,Webhook,Websocket,Bot

# [Dingtalk-Webhook-Proxy](https://github.com/ConnectAI-E/Feishu-Webhook-Proxy/tree/dingding)

1. 将钉钉(dingtalk)webhook代理成websocket
2. 企业自建应用不用创建公网的回调地址，直接本地使用websocket客户端连上这个转发地址


# 设计
1. 使用nchan维护websocket的连接
2. 将钉钉的回调消息，抽取钉钉相关的头信息，外面包一层json，使用X-Request-Id作为唯一ID，推送给对应的channel
3. 客户端自己保存钉钉的密钥信息，从转发服务走的消息都是加密的。
4. 客户端调用钉钉其他接口，直接走自己的网络

## 安全性
1. 钉钉回调消息都是加密的，只能由websocket客户端自己解密，转发服务是透明的。
2. 如何确保自己的channel不会被别人恶意使用？
> 使用nginx basic auth，nchan支持auth_request，在对应的request里面使用basic auth就能做校验


## 实现
- [x] 部署一个nchan（openresty版本）
- [x] 配置一个internal的location，给内部转发钉钉消息使用
- [x] 配置一个location，作为钉钉webhook转发（处理消息转发逻辑）


# organization
> 使用一个organization对当前组织下面的所有bot进行管理
> 这样所有的消息可以通过`org_<name>`一个channel推送，这种模式下启动服务的时候可以不用提前注册所有的bot，可以动态的加入新的bot进去
- [x] 对org_<name>的channel增加basic auth
- [x] hook链接转发消息兼容organization
- [x] 新增一个支持organization的client

```
client = Client(bot1, bot2, org_name='org_lloyd', org_passwd='passwd')
```


# 使用

## python sdk
> 使用装饰器可以更简洁的通过一个回调函数处理消息
```
pip install ca-dingtalk-websocket

from connectai.dingtalk.websocket import Client

client = Client()

@client.on_bot_message(app_id='dingxxx', app_secret='xxx', agent_id='xxx', msgtype='text')
def on_message_callback1(bot, sessionwebhook, content, **kwargs):
    text = content['content']
    bot.reply(sessionWebhook, DingtalkTextMessage("reply: " + text))

client.start()
```
ca-dingtalk-webhook 0.0.5
dingtalk webhook
License: MIT
Requires Python: >=3.8
Keywords: Dingtalk,DingDing,Webhook,Bot

# 企联AI Dev

ConnectAI定位为一个帮助公司更快地建立AI内部工具的平台


## 产品背景

1. 由于各个公司的内部管理流程不同，会有很多无法标准化的长尾AI需求
2. 企业内部技术团队需要将1/3的时间用来开发维护这些内部AI工具
3. 如果能将低代码用于AI内部工具的开发，无疑将极大地提升企业技术团队的效率
4. 既然AI需求是无法标准化的，那么就标准化这些长尾AI需求的开发工具
5. 以低代码的方式提高内部AI工具开发效率


# ca-dingtalk-webhook

1. 生成钉钉(Dingtalk) webhook回调接口
2. 注册处理对应事件的回调方法


## python sdk
```
from connectai.dingtalk.sdk import DingtalkTextMessage
from connectai.dingtalk.webhook import DingtalkServer

app = DingtalkServer()

@app.on_bot_message(app_id='dingxxx', app_secret='xxx', agent_id='xxx', msgtype='text')
def on_text_message(bot, sessionWebhook, content, **kwargs):
    text = content['content']
    bot.reply(sessionWebhook, DingtalkTextMessage("reply: " + text))

app.start(host='0.0.0.0', port=8888)
```
ca-dingtalk-sdk 0.0.5
dingtalk client
License: MIT
Requires Python: >=3.8
Keywords: Dingtalk,DingDing,Webhook,Websocket,Bot

# 企联AI Dev

ConnectAI定位为一个帮助公司更快地建立AI内部工具的平台


## 产品背景

1. 由于各个公司的内部管理流程不同，会有很多无法标准化的长尾AI需求
2. 企业内部技术团队需要将1/3的时间用来开发维护这些内部AI工具
3. 如果能将低代码用于AI内部工具的开发，无疑将极大地提升企业技术团队的效率
4. 既然AI需求是无法标准化的，那么就标准化这些长尾AI需求的开发工具
5. 以低代码的方式提高内部AI工具开发效率
s3adapter 0.6.2
A AWS S3 Python Adapter to Readn, Write and Check existence of files in S3 Buckets.
License: MIT

# S3Adapter

A AWS S3 Python Adapter to Readn, Write and Check existence of files in S3 Buckets.
Current version use adapter to read/write a dataframe as csv in bucket

## Installation

You can install My Package using pip:

```bash
pip install s3adapter
```

## Usage
1. Set defatut AWS Account Environment vars (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION) or call ```s3adapter.init_cloud()``` method

2. Write your code like it to write an Dataframe to your bucket

```python
from fileadapters.s3adapter import s3adapter
import pandas as pd

bucket_name = <your-bucket>
# Creating a DataFrame from a dictionary
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 22],
    'City': ['New York', 'San Francisco', 'Los Angeles']
}

df = pd.DataFrame(data)

# Initialize Adapter with Bucket Name and option to validate if cloud credentials is configured
s3 = s3adapter(bucket_name, validade_aws=True)

# Write dataframe as CSV
s3.write_dataframe_as_csv(df,file_path)

```