LLM-based城市模拟器agent构建库
Project description
Pycityagent
Table of Contents
Introduction
Framework of CityAgent
Workflow of CityAgent
Hands On - By An Easy Demo
Apply for your App
- You first need to register your account in the Opencity website
- Login to the console, create your own app.
- Get your app_id and app_secret
Get your Config
- There are three parts of a config file: llm_request, citysim_request and apphub_request
llm_request:
text_request:
request_type: qwen
api_key: xxx
model: xxx
img_understand_request:
request_type: qwen
api_key: xxx
model: xxx
img_generate_request:
request_type: qwen
api_key: xxx
model: xxx
citysim_request:
simulator:
server: https://api-opencity-2x.fiblab.net:58081
map_request:
mongo_coll: map_beijing_extend_20240205
cache_dir: ./cache
route_request:
server: http://api-opencity-2x.fiblab.net:58082
streetview_request:
engine: baidumap / googlemap
mapAK: baidumap api-key (if you use baidumap engine)
proxy: googlemap proxy (if you use googlemap engine)
apphub_request:
hub_url: https://api-opencity-2x.fiblab.net:58080
app_id: your APP ID
app_secret: your APP Secret
profile_image: the profile image of your agent
- Forget about citysim_request, let's focus on the other two.
LLM_REQUEST
- As you can see, the whole CityAgent is based on the LLM, by now, there are three different parts of config items: text_request, img_understand_request and img_generate_request
- By now, we support qwen and openai
Notice: Our environments are basically conducted with qwen. If you prefer to use openai, then you may encounter hardships. AND fell free to issue us.
- Get your api_key and chooce your models
CITYSIM_REQUEST
- Most of the configuration options in this part are determined, such as simulator.server, map_request.mongo_coll, route_request.server
- map_request.cache_dir: used for storing map data your machine, you can justify the target dir as you wish (create the dir first)
- streetview_request: used for obtaining streetview images, by now, we support baidumap engine and googlemap engine
- if you choose baidumap engine, you need to get a baidumap api-key
streetview_request: engine: baidumap mapAK: xxxx
- if you choose googlemap engine, you need to provide your proxy address, for example:
streetview_request: engine: googlemap proxy: http: http://xxxx https: https://xxxx
- if you choose baidumap engine, you need to get a baidumap api-key
APPHUB_REQUEST
- Used for creating the connection between backend server and client.
- Put your app_id and app_secret here.
- Create your account and apply in Opencity website
Installation
PyPI Installation
- Install from pip easily.
pip install pycityagent
Install from source code
- Clone this repo
- Install required packages
pip install -r requirements.txt
- Install libGL.so.1, if you ara using Linux with a suitable package manager: (apt for instance)
apt-get install libgl1
CODE and RUN
- Check the example folder and copy files from it (
Remember replace the config file
) - Look at the Demo: (A citizen Agent demo)
import yaml
from pycityagent.simulator import Simulator
from pycityagent.urbanllm import LLMConfig, UrbanLLM
import asyncio
import time
async def main():
# load your config
with open('config_template.yaml', 'r') as file:
config = yaml.safe_load(file)
# get the simulator object
smi = Simulator(config['citysim_request'])
# get the person by person_id, return agent
agent = await smi.GetCitizenAgent("name_of_agent", 8)
# Help you build unique agent by scratch/profile
agent.Image.load_scratch('scratch_template.json')
# Load Memory and assist the agent to understand "Opencity"
agent.Brain.Memory.Spatial.MemoryLoad('spatial_knowledge_template.json')
agent.Brain.Memory.Social.MemoryLoad('social_background_template.json')
# Connect to apphub so you can interact with your agent in front end
agent.ConnectToHub(config['apphub_request'])
agent.Bind()
# Creat the soul (a LLM processor actually)
llmConfig = LLMConfig(config['llm_request'])
soul = UrbanLLM(llmConfig)
# Add the soul to your agent
agent.add_soul(soul)
# Start and have fun with it!!!
while True:
await agent.Run()
time.sleep(1)
if __name__ == '__main__':
asyncio.run(main())
Congratulations
- Following this "Hands On" guide, you have easily created an agent by your hand!
- You can observe your AGENT in your console or in the Opencity website.
- HAVE FUN WITH IT!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pycityagent-1.1.1.tar.gz
(53.4 kB
view details)
Built Distribution
File details
Details for the file pycityagent-1.1.1.tar.gz
.
File metadata
- Download URL: pycityagent-1.1.1.tar.gz
- Upload date:
- Size: 53.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e94b798b396b27c9dcd29a0e3eac4afdf8cc70acc130cba591b76a4fe1c49d6 |
|
MD5 | 606d930dad239b8a0e954a4d74998088 |
|
BLAKE2b-256 | 2bb38d1c8fc10f198dc946d680a8b53fcf377c457b0d0f5c03bf346254bf3cfb |
File details
Details for the file pycityagent-1.1.1-py3-none-any.whl
.
File metadata
- Download URL: pycityagent-1.1.1-py3-none-any.whl
- Upload date:
- Size: 69.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d94f80a7d6718d8557e1ede11973fd80c233fe83cc2d93d9862b77e8c0d05fc |
|
MD5 | 8ab1f9d341f952577404491d5e93ddd3 |
|
BLAKE2b-256 | 08b10abdbca790574427df694a835180be6f7b3d11724485b28afbe09cfaf265 |